Lors de l'écriture d'un script shell, j'ai rencontré un problème avec l'instruction if / else suivante qui se situe quelque part au milieu du script:
if [ $act -eq "add" ]
then
read - "add or update: " $comm
git commit -m "$comm $file"
else
git commit -m "$act $file"
fi
L'erreur de retour étant:
./gitup: line 13: [: add: integer expression expected
puis continue avec le reste du script. Comment puis-je avoir le segment if évaluer / comparer la variable à une entrée de chaîne plutôt qu'à un entier; une erreur différente était requise lors de l'utilisation de "! =" parmi quelques autres choses que j'ai essayées.
bash
shell-script
bash-scripting
tony_perkis666
la source
la source
[[]]
test est une construction spécifique à Bash, et cet exemple fonctionne aussi bien avec le POSIX[]
que celui utilisé dans la question. Si l'interpréteur est explicitement donné comme#!/bin/bash
ou similaire, le[[]]
peut être utilisé sans problème (et c'est un peu plus rapide que l'alternative dans Bash , je crois - pas que ce soit de toute façon un goulot d'étranglement), sinon on devrait s'en tenir[]
. Si l'on n'a pas du tout besoin des spécificités de Bash, le script s'exécutera un peu plus rapidement, par exemple dans Dash. Et POSIX garantit une portabilité inhérente.Cette méthode fonctionnerait également. Très similaire à la réponse de @ Guru mais supprime le besoin de crochets doubles.
la source