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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Erreur bash

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur bash

n°1009823
bloodyspik​e
Posté le 11-03-2005 à 14:41:35  profilanswer
 

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 -
mood
Publicité
Posté le 11-03-2005 à 14:41:35  profilanswer
 

n°1009856
wackevat
Posté le 11-03-2005 à 14:54:16  profilanswer
 

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

n°1009862
jagstang
Pa Capona ಠ_ಠ
Posté le 11-03-2005 à 14:58:42  profilanswer
 

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?  
n°1009866
jagstang
Pa Capona ಠ_ಠ
Posté le 11-03-2005 à 15:01:43  profilanswer
 

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
n°1009868
bloodyspik​e
Posté le 11-03-2005 à 15:02:17  profilanswer
 

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


---------------
- Spike -
n°1009873
jagstang
Pa Capona ಠ_ಠ
Posté le 11-03-2005 à 15:03:25  profilanswer
 

c'est les [ ] qu'il faut mettre

n°1009878
bloodyspik​e
Posté le 11-03-2005 à 15:05:02  profilanswer
 

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


---------------
- Spike -
n°1009921
bloodyspik​e
Posté le 11-03-2005 à 15:26:26  profilanswer
 

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 -
n°1009927
jagstang
Pa Capona ಠ_ಠ
Posté le 11-03-2005 à 15:29:13  profilanswer
 

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?  
n°1009935
bloodyspik​e
Posté le 11-03-2005 à 15:34:17  profilanswer
 

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


---------------
- Spike -
mood
Publicité
Posté le 11-03-2005 à 15:34:17  profilanswer
 

n°1009940
jagstang
Pa Capona ಠ_ಠ
Posté le 11-03-2005 à 15:37:53  profilanswer
 

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?  
n°1009949
bloodyspik​e
Posté le 11-03-2005 à 15:45:11  profilanswer
 

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 -
n°1009954
jagstang
Pa Capona ಠ_ಠ
Posté le 11-03-2005 à 15:47:49  profilanswer
 

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?  
n°1009969
bloodyspik​e
Posté le 11-03-2005 à 15:55:21  profilanswer
 

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 -
n°1009979
bloodyspik​e
Posté le 11-03-2005 à 16:04:46  profilanswer
 

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 -
n°1010010
wackevat
Posté le 11-03-2005 à 16:32:50  profilanswer
 


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

n°1010211
Sve@r
Posté le 11-03-2005 à 21:27:43  profilanswer
 

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.
n°1010213
el muchach​o
Comfortably Numb
Posté le 11-03-2005 à 21:38:19  profilanswer
 

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
n°1010437
weed
Posté le 12-03-2005 à 03:04:30  profilanswer
 

/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
n°1010934
Sve@r
Posté le 12-03-2005 à 20:49:55  profilanswer
 

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.
n°1010954
couak
Posté le 12-03-2005 à 21:30:04  profilanswer
 

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

n°1011173
Sve@r
Posté le 13-03-2005 à 13:23:41  profilanswer
 

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.
n°1011235
couak
Posté le 13-03-2005 à 15:34:34  profilanswer
 

ouaip bah pour l'instant avec les bidouilles de wc que je vois, je ne pense pas que ce soit si bien que ca

n°1011714
bloodyspik​e
Posté le 14-03-2005 à 08:41:15  profilanswer
 

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 -
mood
Publicité
Posté le   profilanswer
 


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

  Erreur bash

 

Sujets relatifs
system(escapeshellcmd($bat)) & script bash[MySQL 4.0.15] SELECT imbriqués : erreur
[DOM/XML/PHP] & dans texte = erreur de parsingErreur odbc -> access
Que veux dire cette erreur ?problème d'erreur de segmentation
[c# / .NET][résolu] erreur sur Application.Exit()[VisualC++ 6] Help ! Version Win32 release tombe en erreur
Revenir dans un textbox apres erreur[BASH] Problème message d'erreur
Plus de sujets relatifs à : Erreur bash


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