Pages : 1
#1 Le 30/10/2015, à 15:44
- Simoran
Probleme script bash
Bonjour,
Voici mon script bash
#!/bin/bash
declare -i A;
A=0
while [$A -le 288]
Je veut tout simplement lancer une suite d'instruction tant que A est plus petit que 288 mais voici le message d'erreur qu'il me met : ligne 6: [0 : commande introuvable
Une solution?
Cordialement,
Dernière modification par Simoran (Le 30/10/2015, à 15:44)
Hors ligne
#2 Le 30/10/2015, à 16:01
- nany
Re : Probleme script bash
Bonjour,
bon, j’ai beau chercher dans différents tutos sur la syn taxe des tests mais je n’en trouve aucun qui stipule explicitement que les espaces ont leur importance. Ils se contentent de donner des exemples avec les espaces.
Enfin bref, le fait est qu’il y a besoin d’espace pour que le code soit interprété comme un test.
while [ $A -le 288 ]
EDIT : bon, finalement, le meilleur moyen de s’assurer de la syntaxe est encore le man.
man test
Dernière modification par nany (Le 30/10/2015, à 16:07)
Hors ligne
#3 Le 30/10/2015, à 16:15
- Postmortem
Re : Probleme script bash
Salut,
C'est tout simplement parce que « [ » est un synonyme de la commande « test », et donc, comme pour toutes les commandes, on écrit « test $A -le 288 » et pas « test$A -le 288 ».
Et dans la commande « test » (ou entre crochets simples), il faut utiliser des guillemets autour des variables, sinon, il y a risque d'erreur.
Dernière modification par Postmortem (Le 30/10/2015, à 16:15)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#4 Le 30/10/2015, à 16:51
- MicP
Re : Probleme script bash
EDIT : bon, finalement, le meilleur moyen de s’assurer de la syntaxe est encore le man.
man test
…
NOTE : votre interpréteur de commandes peut avoir sa propre version de test et/ou de [, qui remplace en général la version
décrite ici. Veuillez vous référer à la documentation de votre interpréteur de commandes pour en connaître les options.
…
Il y a 3 différentes commandes test :
- La commande test de l'interpréteur de commandes bash (voir man bash ou/et man builtins)
- La commande test de l'interpréteur de commandes dash (voir man dash)
- L'exécutable /bin/test de coreutils (voir man test)
EDIT : Je ne cherche pas à contredire, d'autant que pour ces trois différentes commandes, leur comportement est pratiquement identique : Je pense simplement ajouter une information comme je l'ai déjà fait ici => Vous en faîtes ce que vous voulez.
Dernière modification par MicP (Le 30/10/2015, à 17:06)
Hors ligne
#5 Le 30/10/2015, à 17:29
- pingouinux
Re : Probleme script bash
Bonjour,
Trois autres façons de faire, pour que A varie de 1 à 288
for A in $(seq 1 188)
do
echo $A
done
for A in {1..288}
do
echo $A
done
A=0
while ((++A <= 288))
do
echo $A
done
Hors ligne
Pages : 1