Bash shell scripting: podmienený string zreťazenie

0

Otázka

Chcem podmienečne predložiť text do iného shell skriptu. Význam chcem nahradiť "UPOZORNENIE" v prípade deb=1 s "INFO":

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

Tiež chcem, aby sa zabránilo ďalším kompletný AK ziskov a strát. Očakávam, že budem mať niečo ako

deb=1 ? "INFO" : "WARNING"

To funguje? Ak áno, ako by kompletný výkaz vyzerať? "--text ..."

Ďakujem vopred.

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

Najlepšiu odpoveď

0

Môže byť vykonaná pomocou index poľa na zápas číselné log-level s menom string:

#!/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

Výstup:

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

hm, celkom v pohode nápad. ďakujem vám veľmi pekne
bivvo

if [[ $abc -lt 98 ]] || [[ $deb -eq 1 ]] je pravda, keď abc==100 a deb==1. Pri pevných odstrániť echo.
Walter A
0

Máte na mysli niečo ako toto?

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

Myslieť na to ako alternatívu if then else fi (v zložených zátvorkách sú len neccesary ak máte ďalšie príkazy, ale rád používam ho aj tak, pre lepšiu čitateľnosť (v niektorých prípadoch).

V podstate je to

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

2021-11-22 11:37:38

Pri abc==100 a deb==1 chcete tiež hovor discord.sh
Walter A

Jo, toto na mňa pôsobí: $([[ $deb -eq 1 ]] && echo 'INFO' || echo 'WARNING')
bivvo

ďakujem vám veľmi pekne
bivvo
0

Mohli by ste, prosím, vyskúšajte:

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

vyzerá veľmi dobre, ďakujeme, že ste!
bivvo

Ja som zabudol na vyradenie echo príkaz pre testovacie účely. Teraz pevne.
tshiono

ďakujem vám veľmi pekne
bivvo
0

IMHO odpoveď @tshiono je najlepšie. Avšak, to sa stáva ťažké na čítanie/debug.
Prečo nepoužívať podrobné riešenie?
Ak obe podmienky sú splnené, sa chcete prihlásiť s INFO.

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

V iných jazykoch

Táto stránka je v iných jazykoch

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