utiliser conditionnel dans le script bash pour vérifier l'argument de chaîne
Je suis en train d'écrire mon script shell thing.sh
de sorte qu'à rendre un fichier exécutable et de l'exécuter avec la seule lettre `A" comme suit:
$ ./thing.sh A
Je obtenir la sortie
A
Si l'argument 1 est pas Un, je veux de la sortie
Not A
Voici mon code pour l'instant :
#!/bin/bash
if [ "$1" -eq "A"]
then echo "A"
else echo "Not A"
fi
qui revient, peu importe ce que je entrer,
./thing.sh: line 3: [:missing `]'
Not A
Je suis en train d'essayer ce que j'espérais voudrais vérifier quelque chose avec l'un ou de plusieurs lettres, et de la comparer à l'encontre de la lettre A; quelqu'un pourrait-il me dire ce que je suis absent pour obtenir que cela fonctionne? Merci
source d'informationauteur user1535776
Vous devez vous connecter pour publier un commentaire.
Quel est le plus court :
?
Et un débutant version (identique logique) :
Comme Scott a dit, vous avez une erreur de syntaxe (manque d'espace).
explications
[[ $1 == A ]]
est exécutée, et puis si c'est vrai,echo "A"
est exécutée, et si c'est faux,echo "not A"
est exécutée, Voir http://mywiki.wooledge.org/BashGuide/TestsAndConditionals[[
est un bash mot-clé similaire (mais plus puissant que) le[
de commande. Voir http://mywiki.wooledge.org/BashFAQ/031 et http://mywiki.wooledge.org/BashGuide/TestsAndConditionalsSauf si vous écrivez pour POSIX sh, je recommande[[
.Modifier la première ligne:
L'opérateur-eq pour les entiers. Et que quelqu'un d'autre a mentionné, l'espace n'question avant de l' ']'.
Voir ici: http://tldp.org/LDP/abs/html/comparison-ops.html
Vous avez besoin d'un espace après "Un"
Essayez de mettre un espace entre
"A"
et]
.