je cherche =C3=A0 r=C3=A9cup=C3=A9rer le plus r=C3=A9cent fichier dans un r=
=C3=A9pertoire :
###begin bash code
#!/bin/sh
OLD=3D$(ls -t fic* |head -1)
CODE=3D$?
echo $CODE
if [ -s ${OLD} ];
then
echo "ok"
fi
###end bash code
le probl=C3=A8me, c'est quand ls ne renvoie rien (il n'existe aucun
fic*)... le code d'erreur est 0, puisque l'affectation fonctionne,
mais ce que je ne comprends pas, c'est que "[ -s rien ]" vaut Vrai
(m=C3=AAme combat avec "-e")... puisque =C3=A7a m'=C3=A9cho "ok".
si une bonne =C3=A2me peut m'expliquer :
1- pourquoi [ -s rien ] vaut vrai ?
2- comment faire =C3=A9chouer le test si $OLD vaut "rien".
Le 03-12-2008, ? propos de (ba)sh - ls et affectation de variables, Thomas vO ?crivait dans fr.comp.os.unix :
bonjour,
Bonjour,
je cherche à récupérer le plus récent fichier dans un répertoire :
###begin bash code #!/bin/sh
OLD=$(ls -t fic* |head -1) CODE=$? echo $CODE if [ -s ${OLD} ]; then echo "ok" fi ###end bash code
le problème, c'est quand ls ne renvoie rien (il n'existe aucun fic*)... le code d'erreur est 0, puisque l'affectation fonctionne, mais ce que je ne comprends pas, c'est que "[ -s rien ]" vaut Vrai (même combat avec "-e")... puisque ça m'écho "ok".
si une bonne âme peut m'expliquer : 1- pourquoi [ -s rien ] vaut vrai ? 2- comment faire échouer le test si $OLD vaut "rien".
test x$OLD = x ?
Cordialement,
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
Le 03-12-2008, ? propos de
(ba)sh - ls et affectation de variables,
Thomas vO ?crivait dans fr.comp.os.unix :
bonjour,
Bonjour,
je cherche à récupérer le plus récent fichier dans un répertoire :
###begin bash code
#!/bin/sh
OLD=$(ls -t fic* |head -1)
CODE=$?
echo $CODE
if [ -s ${OLD} ];
then
echo "ok"
fi
###end bash code
le problème, c'est quand ls ne renvoie rien (il n'existe aucun
fic*)... le code d'erreur est 0, puisque l'affectation fonctionne,
mais ce que je ne comprends pas, c'est que "[ -s rien ]" vaut Vrai
(même combat avec "-e")... puisque ça m'écho "ok".
si une bonne âme peut m'expliquer :
1- pourquoi [ -s rien ] vaut vrai ?
2- comment faire échouer le test si $OLD vaut "rien".
test x$OLD = x ?
Cordialement,
JKB
--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Le 03-12-2008, ? propos de (ba)sh - ls et affectation de variables, Thomas vO ?crivait dans fr.comp.os.unix :
bonjour,
Bonjour,
je cherche à récupérer le plus récent fichier dans un répertoire :
###begin bash code #!/bin/sh
OLD=$(ls -t fic* |head -1) CODE=$? echo $CODE if [ -s ${OLD} ]; then echo "ok" fi ###end bash code
le problème, c'est quand ls ne renvoie rien (il n'existe aucun fic*)... le code d'erreur est 0, puisque l'affectation fonctionne, mais ce que je ne comprends pas, c'est que "[ -s rien ]" vaut Vrai (même combat avec "-e")... puisque ça m'écho "ok".
si une bonne âme peut m'expliquer : 1- pourquoi [ -s rien ] vaut vrai ? 2- comment faire échouer le test si $OLD vaut "rien".
test x$OLD = x ?
Cordialement,
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
Nicolas George
Thomas vO wrote in message :
OLD=$(ls -t fic* |head -1)
Scrogneugneu, on ne parse pas la sortie de ls dans un script.
Thomas vO wrote in message <m13ah5uzzo.fsf@pc-gridmip.cict.fr>:
OLD=$(ls -t fic* |head -1)
Scrogneugneu, on ne parse pas la sortie de ls dans un script.
x=$(ls -t fic* 2> /dev/null) if (( $? != 0 )); then rien fi x=$(echo "$x" | head -1)
PS : note bien les " un peu partout ci-dessus... grosso merdo, toujours mettre des " autour des variables sauf si l'on veux explicitement que le shell joue son rôle comme dans x=$(echo $y)
Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre.
x=$(ls -t fic* 2> /dev/null)
if (( $? != 0 )); then
rien
fi
x=$(echo "$x" | head -1)
PS : note bien les " un peu partout ci-dessus... grosso merdo, toujours
mettre des " autour des variables sauf si l'on veux explicitement que le
shell joue son rôle comme dans x=$(echo $y)
Cordialement,
Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%nospam@laposte.net.invalid
supprimer "%nospam% et ".invalid" pour me repondre.
x=$(ls -t fic* 2> /dev/null) if (( $? != 0 )); then rien fi x=$(echo "$x" | head -1)
PS : note bien les " un peu partout ci-dessus... grosso merdo, toujours mettre des " autour des variables sauf si l'on veux explicitement que le shell joue son rôle comme dans x=$(echo $y)
Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre.
Cyrille Lefevre
Alain Montfranc a écrit :
Nicolas George a écrit
Thomas vO wrote in message :
OLD=$(ls -t fic* |head -1)
Scrogneugneu, on ne parse pas la sortie de ls dans un script.