Shell bash scripting: conditionnel de concaténation de chaîne

0

La question

Je veux conditionnellement soumettre un texte dans un autre script shell. Le sens que je veux remplacer "AVERTISSEMENT" en cas deb=1 "INFO":

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

Je tiens également à éviter une complète SI l'instruction. J'attends d'avoir quelque chose comme

deb=1 ? "INFO" : "WARNING"

Cela fonctionne? Si oui, comment l'énoncé complet ressembler? "--text ..."

Je vous remercie à l'avance.

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

La meilleure réponse

0

Peut être fait avec un index de tableau pour correspondre à un journal numérique-niveau avec une chaîne de nom:

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

Sortie:

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

euh, idée assez cool. merci beaucoup
bivvo

if [[ $abc -lt 98 ]] || [[ $deb -eq 1 ]] est vrai quand abc==100 et deb==1. Lorsque fixe supprimer l' echo.
Walter A
0

Tu veux dire quelque chose comme cela?

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

Penser à cela comme une alternative à if then else fi (les accolades sont uniquement nécessaire si vous avez plus de commandes, mais j'aime l'utiliser de toute façon, pour des raisons de lisibilité (dans certains cas).

En gros, c'est

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

2021-11-22 11:37:38

Lorsque abc==100 et deb==1 vous aussi vous voulez l'appeler discord.sh
Walter A

Ouais, celui-ci fonctionne pour moi: $([[ $deb -eq 1 ]] && echo 'INFO' || echo 'WARNING')
bivvo

merci beaucoup
bivvo
0

Voulez-vous s'il vous plaît essayer:

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

l'air très bon, merci!
bivvo

J'ai oublié de déposer le echo de commande pour les fins de test. Maintenant résolu.
tshiono

merci beaucoup
bivvo
0

À mon humble avis, la réponse de @tshiono est le meilleur. Cependant, il devient difficile à lire/debug.
Pourquoi ne pas utiliser un verbose solution?
Lorsque les deux conditions sont remplies, vous voulez vous connecter avec les informations.

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

Dans d'autres langues

Cette page est dans d'autres langues

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