221 votes

[ : Opérateur inattendu dans la programmation shell

Mon code :

Mais lorsque j’exécute

terminal de m’avertir que

Y a-t-il une quelconque erreur dans mon script bash ? Merci !

378voto

Wolph Points 28062

Il n’y a aucune erreur dans votre script bash . Mais vous l’exécutez avec sh qui possède une syntaxe moins étendue  ;)

Alors, courez `` plutôt  :)

357voto

Nietzche-jou Points 7711

POSIX sh ne comprend pas pour l’égalité de chaînes, puisque c’est un *bash*-ism. Utilisation à la place.

Les autres personnes disent que les crochets ne sont pas pris en charge par sh sont trompent, btw.

24voto

unludo Points 1673

Dans votre code, remplacez cette ligne :

avec

Cela doit être la première ligne de votre script et indique quel shell linux doit être utilisé. SH ne supporte pas les mêmes commandes que bash.

6voto

ghostdog74 Points 86060

vous pouvez utiliser case / esac au lieu de if / else

 case "$choose" in
  [yY]) echo "Yes" && exit;;
  [nN]) echo "No" && exit;;
  * ) echo "wrong input" && exit;;
esac
 

5voto

Anycorn Points 20521

vous devez utiliser bash à la place ou réécrire votre script à l’aide de norme sh

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X