Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1031 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  while [ $1 != chaine ] ne marche pas sous GNU (mais sous SunOS oui)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

while [ $1 != chaine ] ne marche pas sous GNU (mais sous SunOS oui)

n°559624
dduk
Posté le 05-11-2003 à 13:52:03  profilanswer
 

'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:

Code :
  1. != unary operator expected


Pourquoi??
 
Voilà le code:

Code :
  1. #!/bin/sh
  2. while [ $1 != debut ]
  3. do
  4. echo "plop"
  5. shift
  6. done


 
Si qq'un à une idée ce serait cool ;)
 
Merci d'avance  
 
 
DDuK

mood
Publicité
Posté le 05-11-2003 à 13:52:03  profilanswer
 

n°559822
skwee
Posté le 05-11-2003 à 15:36:54  profilanswer
 

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


Message édité par skwee le 05-11-2003 à 15:43:26
n°560293
red factio​n
Posté le 05-11-2003 à 21:10:42  profilanswer
 

ca depent du shell non ?

n°560296
schnapsman​n
Zaford Beeblefect
Posté le 05-11-2003 à 21:13:01  profilanswer
 

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 [:cupra])
 
edit: je me suis planté comme une merde, pardon.
 
apparement le != est correct pour comparer des strings


Message édité par schnapsmann le 05-11-2003 à 21:16:26

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°560358
Kristoph
Posté le 05-11-2003 à 21:57:03  profilanswer
 

Mais debut n'est pas une string non ? Il faudrait plustot ecrire "debut" dans ce cas.

n°560368
schnapsman​n
Zaford Beeblefect
Posté le 05-11-2003 à 22:01:57  profilanswer
 

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  [:calin]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°560515
matafan
Posté le 06-11-2003 à 04:06:09  profilanswer
 

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
 
while [ $1 ] && [ "$1" != "debut" ]
do
    echo "plop"
    shift
done


Message édité par matafan le 06-11-2003 à 04:13:41

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  while [ $1 != chaine ] ne marche pas sous GNU (mais sous SunOS oui)

 

Sujets relatifs
[ Javascript ] pb de soulignés a la place d'espaces dans une chaine..[c] Supprimezr ou creer des espaces ds une chaine de caracteres
[ Flash MX ] Arobase dans une chaine de caractères.??[Résolu]Probleme de traitement de chaine de caractere
[Fortran 90] Longueur de chaine dans un format... Help plz[C++] Recherche d'une chaine dans un fichier
Comment déclare t on une chaine de caractere ?les emoticons ne marche plu sur le forum
test d'une chaine de caractère?[VC++7] int en chaine de caractère :o/
Plus de sujets relatifs à : while [ $1 != chaine ] ne marche pas sous GNU (mais sous SunOS oui)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR