Vous n'êtes pas identifié.
Hello!
j'ai un gros soucis avec un script bash.
ce script est sensé vérifier en local si un "Screen" tourne ou pas, et si non, le lancer automatiquement.
Il fonctionnait sans problème sur mon serveur. Maintenant, il est "expatrié" sur un autre... et ne fonctionne plus!!
A croire que Bash devient fou.
Voyez plutôt:
troll@voltaic:~/scripts$ cat autoscreen #!/bin/sh VAR=`screen -ls | grep "S-$USER" | awk '{print $1}'` # echo $VAR if [ "$VAR" == "No" ] then screen -d -m -S irssi fi troll@voltaic:~/scripts$ ./autoscreen [: 6: ==: unexpected operator troll@voltaic:~/scripts$
J'ai tout tenté: eq, ==, avec "" ou ''... rien n'y fait.
J'ai passé plus de 4 heures dessus, à faire des tests et autres, rien.
un echo $VAR me ressort la valeur "No" en cas de non-présence de screen, et un autre trucs si screen est lancé... bref.... je comprends pas
Si vous voyez le truc..
merci d'avance
@@++
Hors ligne
Hello.
Que je mette /bin/bash ou /bin/sh, ça ne change rien. Trop insisté sur "bash", alors que c'est un script shell...
En gros, il semblerait qu'il ne reconnaisse pas le "==", et utilise le "=" dans els if [ ] comme un "==", ce qui est déconcertant, d'autant plus qu'avant, il passait sans soucis.
En plus, il ne load plus mon .bashrc ni .bash_profile, alors que screen le montait sans soucis avant.... Quand meme surprenant, tout ça, non?
Hors ligne
J'avais déja eu des problèmes de scripts qui ne s'exécutaient plus de manière totalement étrange...la seule solution que j'avais trouvée c'était de supprimer le script et de le recréer dans un autre fichier (un pur copier-coller). Je m'explique toujours pas le pourquoi de la chose...ça arrive généralement quand je les trimballe d'une machine à l'autre.
Hors ligne
@voltaic:~$ bash --version
GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu)
Copyright (C) 2002 Free Software Foundation, Inc.
Vrai que c'est étrange, hein?
Hors ligne
if [ "$VAR" == "No" ]
il faut qu'un seul = et pas de " autour de $VAR
exemple
if [ $myvar = "hello" ] then echo "We have a match" fi
Hors ligne
Comment expliques-tu qu'avant, avec ==, il fonctionnait ?
Et je serais surpris de voir que c'est le seul langage de prog/script qui soit en dehors des "normes" (tous les autres, pour une comparaison, c'est avec "=="...)
ah, et si jamais.... "!=" n'est pas non plus reconnnu et là, je pense pas que ce soit autre chose, ou c'est "!" ??
Enfin, le script fonctionne comme ça, mais c'est un rien agaçant quand on comprend pas pourquoi.... pff.
Hors ligne
bah regarde par toi même:
http://www.phys.ualberta.ca/~gingrich/r … 0000000000
Tests sur les chaînes Encadrer la chaîne par des guillemets ! * "-n "chaîne"" : Vrai si la chaîne n'est pas vide. * "-z "chaîne"" : Vrai si la chaîne est vide. * ""chaine1" = "chaine2"" : Vrai si les deux chaînes sont identiques. * ""chaine1" != "chaine2"" : Vrai si les deux chaînes sont différentes.
Hors ligne
if [ ! -z $( pidof -s screen ) ] then echo tourne else echo ne tourne pas fi
Hors ligne