while [ $1 != chaine ] ne marche pas sous GNU (mais sous SunOS oui) - Shell/Batch - Programmation
Marsh Posté le 05-11-2003 à 15:36:54
alors la, je ne sais vraiment pas, mais peut etre peux tu contourner la difficulté en attendant ?
du style :
COND=0
while [ ${COND} = 0 ]
do
case $1 in
debut) echo "blabla";;
*) echo "plop"
COND=1 ;;
esac
done
Marsh Posté le 05-11-2003 à 21:13:01
c'est pas standard pour sh le "!="
si mes souvenirs sont bons, l'op d'inégalité c'est "-ne" ou un truc comme.
(read the fucking "man sh" please )
edit: je me suis planté comme une merde, pardon.
apparement le != est correct pour comparer des strings
Marsh Posté le 05-11-2003 à 21:57:03
Mais debut n'est pas une string non ? Il faudrait plustot ecrire "debut" dans ce cas.
Marsh Posté le 05-11-2003 à 22:01:57
Kristoph a écrit : Mais debut n'est pas une string non ? Il faudrait plustot ecrire "debut" dans ce cas. |
exact, on dirait que t'as gagné le cocotier
Marsh Posté le 06-11-2003 à 04:06:09
Non le problème est ailleurs : si ça ne match jamais (ou si tu oublies de donner un argument) $1 va finir par être vide, et tu as une erreur de syntaxe puisque le shell voit « while [ != "debut"] ». Il faut mettre des « " » autour du $1.
Après évidemment il y a un autre problème : le script ne s'arrête plus (avant il s'arretait... Avec l'erreur). Donc tu peux faire un truc du genre :
#!/bin/sh |
Marsh Posté le 05-11-2003 à 13:52:03
'ai un bout de code très simple qui marche sous SunOS mais pas sous GNU/* (GNU/Linux)
J'ai l'erreur suivante sous Linux:
Pourquoi??
Voilà le code:
Si qq'un à une idée ce serait cool
Merci d'avance
DDuK