283 votes

si arguments est égal à cette chaîne, définissez une variable comme cette chaîne

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 ce faire. J'ai essayé ceci :

 source=""
samples=("")
if [ $1="country" ]; then
   source="country"
   samples="US Canada Mexico..."
else
   echo "try again"
fi

mais lorsque j'ai exécuté mon script source countries.sh country cela n'a pas fonctionné. Qu'est-ce que je fais mal?

501voto

Alex L Points 526

N'oubliez pas les espaces :

 source=""
samples=("")
if [ $1 = "country" ]; then
   source="country"
   samples="US Canada Mexico..."
else
  echo "try again"
fi

3voto

hmontoliu Points 1203

À première vue, vous faites une affectation = dans votre instruction if au lieu d'une comparaison == En gros, vous devrez faire :

 mysource=""
samples=("")


if [ "$1" == "country" ]; then
   mysource="country"
   samples="US Canada Mexico..."
else
  echo "try again"
fi

C'EST À DIRE:

 ~$ source /tmp/foo.sh country
~$ echo $samples 
US Canada Mexico...

Est-ce que c'est ce que tu veux?

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