Le problème ici c'est que tu veux la valeur de retour de cette commande, or tu utilises des guillemets simples. Il faudrait des guillemets arrières (backquote, accessibles via la combinaison AltGr+7: `). Vu la confusion visuelle pour les débutants, utilise plutôt la forme moderne avec dollar et parenthèses:
vpn=$(nordvpn status)
Ensuite ici tu veux sans doute tester que le texte renvoyé par la commande nordvpn status est égal à une chaine de caractères.
if$vpn= Status: Disconnected
Dans ce cas utilise des guillemets doubles pour délimiter ta chaine: "Status: Disconnected". De plus, c'est une bonne pratique d'utiliser systématiquement des guillemets doubles quand tu rappelles le contenu d'une variable. Cela permet d'éviter plein de pièges quand la valeur contient des espaces (particulièrement gênant pour gérer les noms de fichiers).
if"$vpn"="Status: Disconnected"
Ceci devrait donc fonctionner:
#!/bin/bashvpn=$(nordvpn status)if"$vpn"="Status: Disconnected"then
nordvpn c
fi
Pour bien apprendre bash, je te conseille aussi d'utiliser un linter comme shellcheck, qui doit être disponible sur ta distribution Linux. En lançant shellcheck monscript.sh, il te remontera des messages sur les potentielles erreurs.
[^] # Re: Script shell
Posté par liberforce (site web personnel, Mastodon) . En réponse au message Script shell. Évalué à 4. Dernière modification le 10 février 2020 à 11:29.
Hello,
il y a un soucis dans ton script. Tu compares la chaîne
nordvpn statusà... je ne sais trop quoi...Si tu veux faire du bash, voici une ressource qui te sauvera la vie:
http://www.tldp.org/LDP/abs/html/abs-guide.html
(et sa traduction française, très légèrement en retard: https://abs.traduc.org/abs-fr/ )
Maintenant analysons les soucis de ton script:
Le problème ici c'est que tu veux la valeur de retour de cette commande, or tu utilises des guillemets simples. Il faudrait des guillemets arrières (backquote, accessibles via la combinaison
AltGr+7: `). Vu la confusion visuelle pour les débutants, utilise plutôt la forme moderne avec dollar et parenthèses:Ensuite ici tu veux sans doute tester que le texte renvoyé par la commande
nordvpn statusest égal à une chaine de caractères.Dans ce cas utilise des guillemets doubles pour délimiter ta chaine:
"Status: Disconnected". De plus, c'est une bonne pratique d'utiliser systématiquement des guillemets doubles quand tu rappelles le contenu d'une variable. Cela permet d'éviter plein de pièges quand la valeur contient des espaces (particulièrement gênant pour gérer les noms de fichiers).Ceci devrait donc fonctionner:
Pour bien apprendre bash, je te conseille aussi d'utiliser un linter comme
shellcheck, qui doit être disponible sur ta distribution Linux. En lançantshellcheck monscript.sh, il te remontera des messages sur les potentielles erreurs.Bon scripting :)