Erreur bash - Shell/Batch - Programmation
Marsh Posté le 11-03-2005 à 14:54:16
Je pense que tu devrais mettre == "running" au lieu de =.
Marsh Posté le 11-03-2005 à 14:58:42
man test ?
Code :
|
Marsh Posté le 11-03-2005 à 15:01:43
wackevat a écrit : |
non.
http://www.rt.com/man/test.1.html
Marsh Posté le 11-03-2005 à 15:02:17
Que je mette == ou = c'est pareil...
Marsh Posté le 11-03-2005 à 15:05:02
avec des [ ] il dit "[running commande not found" !
Marsh Posté le 11-03-2005 à 15:26:26
Il s'agit d'un problème dans l'ecriture deja et `` lancait le resultat comme une commande.
Donc il faudrait que qqu'un me donne la bonne synthaxe pour :
if /usr/bin/ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22` = "running"
ou il faut comparer le resultat de la commande ssh avec le mot running.
Marsh Posté le 11-03-2005 à 15:29:13
bloodyspike a écrit : Il s'agit d'un problème dans l'ecriture deja et `` lancait le resultat comme une commande. |
....
Marsh Posté le 11-03-2005 à 15:34:17
Oups inversion de b et de c... :X
Marsh Posté le 11-03-2005 à 15:37:53
c'est pas ça que je voulais souligner...
Marsh Posté le 11-03-2005 à 15:45:11
Ah oué ben je sais pas ou placer "" {} [] () '' dans ma commande donc si qqu'un peut m'aider...
J'ai essayé tous les trucs possible mais je trouve pas...
Marsh Posté le 11-03-2005 à 15:47:49
mais bordel faut pas essayer au hasard et espérer que ça va fonctionner....
faut lire le man que j'ai posté plus haut
Marsh Posté le 11-03-2005 à 15:55:21
j'ai lu mais j'y arrive pas...
J'arrive pas a dire tu execute "/usr/bin/ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22" et le compare a running soit il me prend running comme la suite de la commande soit il n'excute pas la commande...
Marsh Posté le 11-03-2005 à 16:04:46
De plus rien ne marche le test me renvoie jamais rien...
Citation : [root@bittorrent plugins]# test ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22 |
Marsh Posté le 11-03-2005 à 21:27:43
bloodyspike a écrit : Qqu'un peut me trouver pourquoi il me retourne que running n'est pas une commande ?
|
L'instruction "if" ne peut vérifier que des commandes, pas autre chose.
Si tu fais "if `qqchose`" et que qqchose t'affiche "running", le shell essaye de faire "if running" et il te répond qu'il n'arrive pas à exécuter "running" ce qui est normal car "running" n'est pas une commande.
La commande qui permet de tester des égalités est la commande "test".
Donc
if test `/usr/bin/ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22` = "running"
Les crochets [] sont un alias pour la commande "test" donc
if [ `/usr/bin/ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22` = "running" ]
Attention, il y a un espace avant et après chaque crochet
Marsh Posté le 11-03-2005 à 21:38:19
MOi, je mets == dans un test (mais c'est p-ê du csh, je sais plus). Et s'il fait un grep , il augmentera ses chances de succès...
Marsh Posté le 12-03-2005 à 03:04:30
/usr/bin/ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22
te retourne bien running (quand c'est lancé bien sur) ?
sinon tu peux faire
if [ `/usr/bin/ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22 | grep -c running` = 1 ]
Marsh Posté le 12-03-2005 à 20:49:55
el muchacho a écrit : MOi, je mets == dans un test (mais c'est p-ê du csh, je sais plus). Et s'il fait un grep , il augmentera ses chances de succès... |
== c'est pour du C (et peut-être cshell) mais pas pour du shell.
La commande "test" de shell impose "="
Ensuite, faire un grep n'est pas forcément une bonne idée. Si il veut vérifier que sa commande affiche "running" et pas autre chose, alors il faut pas de grep parce que "grep" donnera vrai même si la commande affiche "blablablarunningbliblibli"
On n'a pas besoin d'augmenter ses chances de succès quand on défini bien ce qu'on cherche et comment on doit le récupérer. Bref, quand on fait une bonne analyse du problème
Marsh Posté le 12-03-2005 à 21:30:04
je ne comprend pas pourquoi on cherche absolument à tout caser sur une seule ligne juste pour croire qu'on fait qque chose de beau
on fais au plus simple, au mieux, et au plus lisible
Code :
|
Voilà
Marsh Posté le 13-03-2005 à 13:23:41
couak a écrit : je ne comprend pas pourquoi on cherche absolument à tout caser sur une seule ligne juste pour croire qu'on fait qque chose de beau
|
Tu fais erreur...
On ne case pas tout sur une ligne pour faire croire qu'on fait qqchose de beau, on case tout sur une ligne parce qu'on connait assez bien le shell et qu'on sait pouvoir relire facilement cette ligne.
Ta solution est plus décomposée, peut-être plus lisible pour toi mais elle n'est pas "mieux". Et le ";" en fin de "PLOP=..." n'est pas obligatoire...
Marsh Posté le 13-03-2005 à 15:34:34
ouaip bah pour l'instant avec les bidouilles de wc que je vois, je ne pense pas que ce soit si bien que ca
Marsh Posté le 14-03-2005 à 08:41:15
Sve@r a écrit : L'instruction "if" ne peut vérifier que des commandes, pas autre chose. |
Merci beaucoup pour ta réponse et ton explication.
Ca marche niquel maintenant...
Ca fait plaisir de voir des gens qui prennent 5 à 10min pour bien expliquer le problème !
Marsh Posté le 11-03-2005 à 14:41:35
Qqu'un peut me trouver pourquoi il me retourne que running n'est pas une commande ?
Message édité par bloodyspike le 11-03-2005 à 14:42:06
---------------
- Spike -