Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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? smile
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
man test a écrit :


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. smile

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