Erreur bash

Erreur bash - Shell/Batch - Programmation

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 ?  
 

Code :
  1. #!/bin/bash
  2. if `/usr/bin/ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22` = "running"
  3. then
  4.         echo "OK"
  5.         exit 1
  6. else
  7.         echo "ARF"
  8.         exit 2
  9. fi


Message édité par bloodyspike le 11-03-2005 à 14:42:06

---------------
- Spike -
Reply

Marsh Posté le 11-03-2005 à 14:41:35   

Reply

Marsh Posté le 11-03-2005 à 14:54:16    

:hello:
 
Je pense que tu devrais mettre == "running" au lieu de =.

Reply

Marsh Posté le 11-03-2005 à 14:58:42    

man test ?
 
 

Code :
  1. #!/bin/bash
  2. if [ `/usr/bin/ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22` = "running" ]
  3. then
  4.         echo "OK"
  5.         exit 1
  6. else
  7.         echo "ARF"
  8.         exit 2
  9. fi


 
 


Message édité par jagstang le 11-03-2005 à 15:11:09

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 11-03-2005 à 15:01:43    

wackevat a écrit :

:hello:
 
Je pense que tu devrais mettre == "running" au lieu de =.


 
 
non.
http://www.rt.com/man/test.1.html


Message édité par jagstang le 11-03-2005 à 15:10:47
Reply

Marsh Posté le 11-03-2005 à 15:02:17    

Que je mette == ou = c'est pareil...


---------------
- Spike -
Reply

Marsh Posté le 11-03-2005 à 15:03:25    

c'est les [ ] qu'il faut mettre

Reply

Marsh Posté le 11-03-2005 à 15:05:02    

avec des [ ] il dit "[running commande not found" !


---------------
- Spike -
Reply

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.


Message édité par bloodyspike le 11-03-2005 à 15:34:00

---------------
- Spike -
Reply

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.
Donc il faudrait que qqu'un me donne la conne 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.


....


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 11-03-2005 à 15:34:17    

Oups inversion de b et de c... :X


---------------
- Spike -
Reply

Marsh Posté le 11-03-2005 à 15:34:17   

Reply

Marsh Posté le 11-03-2005 à 15:37:53    

c'est pas ça que je voulais souligner...


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

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


---------------
- Spike -
Reply

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


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

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


---------------
- Spike -
Reply

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
bash: test: too many arguments
[root@bittorrent plugins]# test "ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22"
[root@bittorrent plugins]# test ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22 -o running
cut: invalid option -- o
[root@bittorrent plugins]# test "ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22" -o running
[root@bittorrent plugins]# test `ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22` -o running
[root@bittorrent plugins]# test "`ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22`" -o running
[root@bittorrent plugins]# test "`ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22`" -a running
[root@bittorrent plugins]# test `ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22` -a running
[root@bittorrent plugins]# test ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22 -a running
bash: test: too many arguments
cut: invalid option -- a
[root@bittorrent plugins]# test "ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22" -a "running"
[root@bittorrent plugins]# test "ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22" -a running
[root@bittorrent plugins]# test 1 -a 1
[root@bittorrent plugins]# test 1 -o 1
[root@bittorrent plugins]# test "1" -o "1"
[root@bittorrent plugins]# test "1" -a "1"
[root@bittorrent plugins]# test "1" OP "1"
bash: test: OP: binary operator expected
[root@bittorrent plugins]# test ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22 OP running
bash: test: too many arguments
cut: OP: No such file or directory
cut: running: No such file or directory
[root@bittorrent plugins]# test `ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22` OP running
bash: test: OP: binary operator expected
[root@bittorrent plugins]# test `ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22` = running
[root@bittorrent plugins]# test `ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22` != running


Message édité par bloodyspike le 11-03-2005 à 16:07:19

---------------
- Spike -
Reply

Marsh Posté le 11-03-2005 à 16:32:50    


D'accord. Merci de me rafraîchir la mémoire :D
:jap:

Reply

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 ?  
 

Code :
  1. #!/bin/bash
  2. if `/usr/bin/ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22` = "running"
  3. then
  4.         echo "OK"
  5.         exit 1
  6. else
  7.         echo "ARF"
  8.         exit 2
  9. fi



 
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


Message édité par Sve@r le 12-03-2005 à 20:52:34

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

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


Message édité par el muchacho le 11-03-2005 à 21:39:37
Reply

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 ]


Message édité par weed le 12-03-2005 à 03:04:52
Reply

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


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

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 :
  1. PLOP=`/usr/bin/ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22`;
  2. if [ "$PLOP" = "running" ]
  3. (...)


Voilà :)

Reply

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
on fais au plus simple, au mieux, et au plus lisible

Code :
  1. PLOP=`/usr/bin/ssh pierre.marc@172.16.246.200 lpstat -r | cut -c14-22`;
  2. if [ "$PLOP" = "running" ]
  3. (...)


Voilà :)


 
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...  :)


Message édité par Sve@r le 13-03-2005 à 13:24:19

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

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

Reply

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


 
Merci beaucoup pour ta réponse et ton explication.  :jap:  
Ca marche niquel maintenant...  :bounce:  
Ca fait plaisir de voir des gens qui prennent 5 à 10min pour bien expliquer le problème !  :hello:  


---------------
- Spike -
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed