Redirection de stdout et test succès commande [Bash] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 06-07-2007 à 11:56:20
$? contient le retour de la dernière commande exécutée...
Marsh Posté le 06-07-2007 à 11:56:58
après le wget, tu regardes le contenu de la variable $?
Si c'est 0, le résultat est ok, sinon c'est que ça a merdé
wget ... |
de rien
edit:
Marsh Posté le 06-07-2007 à 12:01:14
Idem pour :
echo `wget -O - http://auzerait.eu -q || exit 1` |\ |
Le premier "exit 1" ne sort pas du script: le "ok" s'affiche, alors que pourant l'url n'est pas bonne.
Marsh Posté le 06-07-2007 à 12:06:09
wedgeant a écrit : après le wget, tu regardes le contenu de la variable $? |
Oui, je sais bien que $? contient le code de retour.
Le problème c'est qu'avec ce script :
#!/bin/sh |
J'obtiens comme résultat :
bash ./test |
Alors que je devrais avoir : "ok" .
Marsh Posté le 06-07-2007 à 13:03:12
#!/bin/bash |
je sais pas si c'est super propre comme tu le veux mais ca marche...
Marsh Posté le 06-07-2007 à 14:24:49
Code :
|
Marsh Posté le 06-07-2007 à 14:50:40
juste comme ca, pour ma culture, c'est beaucoup plus propre ton code ? Ou c'est juste une facon de faire autrement ?
Marsh Posté le 06-07-2007 à 16:11:18
C'est pas une question de plus propre où non : ton script ne permet pas de faire quoi que ce soit avec la sortie de wget, donc ça ne répond pas au problème.
Edit : d'ailleurs la solution de fighting_falcon ne fait pas non plus exactement ce qui était demandé. Si l'une des commandes à droite du pipe échoue, tu va prendre faire le exit 1 même si le wget a réussi.
Marsh Posté le 06-07-2007 à 16:13:43
j'avais cru qu'il voulait juste récupérer l'ip retournée par son site...
Marsh Posté le 07-07-2007 à 09:50:55
j'ai pas testé mon code (pas le temps dsl), le truc important c'était le
Code :
|
je sais que j'avais butté sur un truc à la con du même genre (enchaînement de commandes, mais sortie dès que l'une foire, ou seulement si toutes foirent), ce qui m'avait amené à trouver ce "set -o pipefail"
j'ai posté ça comme une éventuelle piste ...
Marsh Posté le 11-07-2007 à 12:14:03
use file descriptor luke !
Marsh Posté le 12-07-2007 à 09:54:29
ReplyMarsh Posté le 12-07-2007 à 09:55:04
_p1c0_ a écrit : j'avais cru qu'il voulait juste récupérer l'ip retournée par son site... |
C'était qu'un exemple, le script est utilisé avec un site qui donne bcp plus d'infos que l'ip publiqeu.
Marsh Posté le 14-07-2007 à 12:43:46
leto a écrit : C'est à dire ? |
ben si tu passes par un fichier temporaire, tu fais un truc du genre :
- wget url -o file
- test du retour de wget
- while read line; do blabla; done < file
donc faut juste réussir à se passer du fichier temporaire. Les file descriptors sont une bonne solution je pense :
http://tldp.org/LDP/abs/html/io-redirection.html
Marsh Posté le 16-07-2007 à 16:09:34
Dans le nom "file descriptor", il y a "file". On dirait bien qu'il crée un fichier non?
Dans ce cas, autant créer un fichier temporaire avec mktemp non?
Marsh Posté le 06-07-2007 à 11:55:24
Bonjour,
J'ai un petit problème avec un script bash, qui se présente comme suit:
#!/bin/sh
wget -q -O - http://aurait.eu |\
while read ligne
do
.... Divers traitements ...
done
Mon problème est que j'aimerais tester la valeur retournée par le wget, sans changer ce qui est renvoyé au read.
J'ai testé un :
wget -q -O - http://aurait.eu || exit 1 |\
Mais ça ne fonctionne pas...
Si quelqu'un a une idée, elle est la bienvenue.
Merci.
---------------
--