ตบเชลล์สคริปต์ comment:เงื่อนไขเซลข้อความ concatenation

0

คำถาม

ฉันอยากจะ conditionally ส่งข้อความไปยังอีกเชลล์สคริปต์ หมายความว่าฉันต้องการจะแทนที่"แจ้งเตือน"ในกรณีที่เด็บ=1 กับ"ข้อมูล":

#!/usr/bin/env bash
...
if [[ $abc -lt 98 ]] || [[ $deb -eq 1 ]]
then 
    ./discord.sh --webhook-url=$url --text "WARNING: $abc"
fi

ฉันก็อยากจะหลีกเลี่ยงอีกสมบูรณ์แล้วถ้าการปราศรัยได้เลย ฉันหวังว่าจะมีบางอย่างอย่าง

deb=1 ? "INFO" : "WARNING"

มันต้องใช้ความพยายามจะรักษา ถ้าใช่แล้วยังไงจะคนสมบูรณ์แถลงการณ์ดูเหมือน? "--ข้อความ..."

ขอบคุณล่วงหน้า

bash debian raspberry-pi scripting
2021-11-22 10:27:36
4

คำตอบที่ดีที่สุด

0

สามารถจะจบเรื่องกับการตารางคู่ลำดับดัชนีที่เข้ากันเป็น numerical ปูมบันทึกระดับด้วยชื่อข้อความ:

#!/usr/bin/env bash

url=https://example.com/hook

logLevel=(WARNING INFO)

for abc in 97 98; do
  for deb in 0 1; do
    printf 'abc=%d, deb=%d:\n' $abc $deb
    (((i = 1 == deb) || 98 > abc)) &&
      echo ./discord.sh --webhook-url=$url --text "${logLevel[i]}: $abc"
  done
done

แสดงผล:

abc=97, deb=0:
./discord.sh --webhook-url=https://example.com/hook --text WARNING: 97
abc=97, deb=1:
./discord.sh --webhook-url=https://example.com/hook --text INFO: 97
abc=98, deb=0:
abc=98, deb=1:
./discord.sh --webhook-url=https://example.com/hook --text INFO: 98
2021-11-22 14:27:12

เอ่อค่อนข้างเจ๋งรู้หรอก ขอบคุณมาก
bivvo

if [[ $abc -lt 98 ]] || [[ $deb -eq 1 ]] เป็นความจริงตอนที่ abc==100 แล้ว deb==1. ตอนที่ซ่อมลบ echo.
Walter A
0

คุณหมายถึงอะไรแบบนี้?

 [[ $abc -lt 98 ]] && {
   ./discord.sh --webhook-url=$url --text "$([[ $deb -eq 1 ]] && echo "INFO" || echo "WARNING"): $abc"
 }

คิดซะว่านี่เป็นทางเลือกต้อง if then else fi (กินเล็บเปิดและปิดเป็นเพียง neccesary ถ้าคุณมีมากกว่าคำสั่งของแต่ผมอยากจะใช้มันยังไงก็ตาม,สำหรับ readability(ในบางกรณี).

โดยทั่วไปแล้วจะเป็น

[[ condition ]] && { commands if true } || { commands if false }

2021-11-22 11:37:38

ตอนที่ abc==100 แล้ว deb==1 คุณยังอยากเรียก discord.sh
Walter A

ใช่อันนี้ทำงานสำหรับฉัน: $([[ $deb -eq 1 ]] && echo 'INFO' || echo 'WARNING')
bivvo

ขอบคุณมาก
bivvo
0

คุณโปรดลอง:

if (( abc < 98 || deb == 1 )); then
    loglevel=$( (( deb == 1 )) && echo "INFO" || echo "WARNING" )
    ./discord.sh --webhook-url=$url --text "$loglevel: $abc"
fi
2021-11-22 11:11:24

ดูดีมากขอบคุณ!
bivvo

ฉันลืมทิ้ง echo คำสั่งสำหรับการทดสอบวัตถุประสงค์ ตอนนี้ซ่อมแล้ว
tshiono

ขอบคุณมาก
bivvo
0

IMHO คำตอบของ@tshiono มากเลยฉันชนะแน่งานนี้ อย่างไรก็ตามมันจะกลายเป็นยากที่จะอ่าน/การดีบั๊ก.
ทำไมไม่ใช้ verbose ทางออก?
เมื่อทั้งสองเงื่อนไขเป็นเรื่องจริงคุณต้องการเพื่อทำการล็อกอินกับข้อมูล

if ((deb==1 )); then 
  ./discord.sh --webhook-url="$url" --text "INFO: $abc"
elif ((abc < 98)); then
  ./discord.sh --webhook-url="$url" --text "WARNING: $abc"
fi
2021-11-22 11:05:00

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่