J'ai besoin de comprendre bash si les expressions. Bien sûr, j'ai utilisé Google. Je sais que cela se passe quelque chose comme ceci:Bash Impossible de faire fonctionner IF comme je veux
if [ expr operator expr ]
then
doSomeThing
fi
Cependant, je comprends que Bash n'a pas de type de données booléen. Je veux vérifier si le fichier passé en argument ($ 1) existe. La façon dont je ferais ce droit de mon esprit:
if [ -e $1 = true ]
then
echo "File exists."
fḯ
Ou peut-être comme:
if [ -e $1 ] #Assuming that this is true only if file in $1 exists.
Aucun de ces travaux, et je ne suis pas sûr de ce que [] moyens. -e $ 1 semble être un choix judicieux, mais c'est toujours vrai? Il existe différents opérateurs pour les chaînes et les entiers. Et je ne peux pas utiliser de parenthèses pour regrouper des expressions. C'est tellement déroutant.
Quelqu'un at-il obtenu quelques indices? L'IF de bash ne fonctionne pas comme si j'avais essayé dans une autre langue.
Que fait-il quand ajouter « » environ 1 $ => « $ 1 »? – Algific
Il fera exactement UN argument pour/usr/bin/test, peu importe le nombre d'espaces. –
Sauf que '[' et 'test' sont aussi des builtins Bash et en tant que tels sont exécutés avec une priorité supérieure à'/usr/bin/{[, test} ' –