Je fais un script bash et maintenant j'ai un appel de variable source
et un tableau appelé samples
, comme ceci:
source='country'
samples=(US Canada Mexico...)
comme je veux augmenter le nombre de sources (et chaque source a ses propres échantillons), j'ai essayé d'ajouter quelques arguments pour le faire. J'ai essayé ceci:
source=""
samples=("")
if [ $1="country" ]; then
source="country"
samples="US Canada Mexico..."
else
echo "try again"
fi
mais quand j'ai exécuté mon script, source countries.sh country
cela n'a pas fonctionné. Qu'est-ce que je fais mal?
$1="country"
vs$1 = "country"
Réponses:
N'oubliez pas les espaces:
la source
samples="US Canada Mexico..."
après avoir introduit la création de tableau avantsamples=(US Canada Mexico...)
?if [ "$1" = "country" ]; then
.Vous pouvez utiliser les opérateurs "=" ou "==" pour la comparaison de chaînes dans bash. Le facteur important est l'espacement entre les crochets. La méthode appropriée consiste à ce que les crochets contiennent l'espacement à l'intérieur et les opérateurs à contenir l'espacement autour. Dans certains cas, différentes combinaisons fonctionnent; cependant, ce qui suit est destiné à être un exemple universel.
Notez également que les crochets doubles sont traités légèrement différemment des crochets simples ...
J'espère que ça aide!
la source
Il semble que vous cherchiez à analyser les arguments de ligne de commande dans votre script bash. J'ai moi-même cherché cela récemment. Je suis tombé sur les éléments suivants qui, je pense, vous aideront à analyser les arguments:
http://rsalveti.wordpress.com/2007/04/03/bash-parsing-arguments-with-getopts/
J'ai ajouté l'extrait ci-dessous en tant que tl; dr
./script.sh -t test -r serveur -p mot de passe -v
la source