Le chemin peut être falsifié de tout un tas de manières, et être changé en cours de route.
Thomas
In article <46ffabc5$0$6798$, Nicolas George <nicolas$ wrote:
Thomas wrote in message :
DOSSIERPARENT=`dirname "$0" || exit`
Ce n'est pas fiable de toutes façons, tu as un problème de conception dans le script.
je sais que ça ne marche pas si on le met dans le path, par exemple c'est ça que tu voulais dire ?
pas grave, pour l'instant il n'y a que moi qui l'utilise
par contre, je voudrais être prévenu si dirname fait une erreur
est ce que c'est possible sans faire dirname "$0" || exit une 2eme fois avant ?
et ça serait bien, d'une manière générale, si c'était possible de faire avec `` comme on peut faire avec () en les remplaçant par {} (c'est pas trop confus ?)
j'aimerais que, si jamais un jour netstat faisait une erreur, le script se termine (sans exécuter osascript ni ce qui suit)
Avec des accolades ça devrait aller.
merci, ça marche :-)
-- j'agis contre l'assistanat, je travaille dans une SCOP !
In article <46ffabc5$0$6798$426a74cc@news.free.fr>,
Nicolas George <nicolas$george@salle-s.org> wrote:
Thomas wrote in message
<fantome.forums.tDeContes-EDE3A0.15241430092007@news.proxad.net>:
DOSSIERPARENT=`dirname "$0" || exit`
Ce n'est pas fiable de toutes façons, tu as un problème de conception dans
le script.
je sais que ça ne marche pas si on le met dans le path, par exemple
c'est ça que tu voulais dire ?
pas grave, pour l'instant il n'y a que moi qui l'utilise
par contre, je voudrais être prévenu si dirname fait une erreur
est ce que c'est possible sans faire
dirname "$0" || exit
une 2eme fois avant ?
et ça serait bien, d'une manière générale, si c'était possible de faire
avec `` comme on peut faire avec () en les remplaçant par {}
(c'est pas trop confus ?)
In article <46ffabc5$0$6798$, Nicolas George <nicolas$ wrote:
Thomas wrote in message :
DOSSIERPARENT=`dirname "$0" || exit`
Ce n'est pas fiable de toutes façons, tu as un problème de conception dans le script.
je sais que ça ne marche pas si on le met dans le path, par exemple c'est ça que tu voulais dire ?
pas grave, pour l'instant il n'y a que moi qui l'utilise
par contre, je voudrais être prévenu si dirname fait une erreur
est ce que c'est possible sans faire dirname "$0" || exit une 2eme fois avant ?
et ça serait bien, d'une manière générale, si c'était possible de faire avec `` comme on peut faire avec () en les remplaçant par {} (c'est pas trop confus ?)
dans le 1er cas, il faut TOUJOURS protéger les variables tel que :
[ "$x" = "$y" ]
alors que dans le second, ce n'est pas nécessaire.
[[ $x = $y ]]
par ailleurs, dans le second cas, "y" est considéré comme une expression rationnel shell (pattern). pour éviter cela, il faut mettre cette "pattern" entre guillemets, tel que :
[[ $x = $y ]]
PS : en ksh 88, il FAUT utiliser "=", alors qu'en ksh93, c'est plutôt "==". toutefois, "=" reste acceptable ! pas vraiment pratique...
Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre. remove "%nospam" and ".invalid" to answer me.
2 exemples :
DOSSIERPARENT=`dirname "$0" || exit`
DOSSIERPARENT=$(dirname "$0")
cd "${DOSSIERPARRENT}" || exit
j'aimerais que, si jamais un jour dirname faisait une erreur, le script
se termine
a priori, dirname ne sortira pas en erreur avec $0.
au pire, il renvoie ".".
perso, je préfère, en ksh :
if [[ $0 = */* ]]; then
DOSSIERPARENT=${0%/*}
else
DOSSIERPARENT=${PWD} # ou "."
fi
ce qui évite un appel à "dirname".
dans ou boucle ou un script en boucle, cela peut avoir son importance.
ATTENTION :
VAR=$(commande) renvoie le code retour de la commande.
typeset VAR=$(commande) renvoie celui de typeset, soit 0.
dans le 1er cas, il faut TOUJOURS protéger les variables tel que :
[ "$x" = "$y" ]
alors que dans le second, ce n'est pas nécessaire.
[[ $x = $y ]]
par ailleurs, dans le second cas, "y" est considéré comme une expression
rationnel shell (pattern). pour éviter cela, il faut mettre cette
"pattern" entre guillemets, tel que :
[[ $x = $y ]]
PS : en ksh 88, il FAUT utiliser "=", alors qu'en ksh93, c'est plutôt
"==". toutefois, "=" reste acceptable ! pas vraiment pratique...
Cordialement,
Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%nospam@laposte.net.invalid
supprimer "%nospam% et ".invalid" pour me repondre.
remove "%nospam" and ".invalid" to answer me.
dans le 1er cas, il faut TOUJOURS protéger les variables tel que :
[ "$x" = "$y" ]
alors que dans le second, ce n'est pas nécessaire.
[[ $x = $y ]]
par ailleurs, dans le second cas, "y" est considéré comme une expression rationnel shell (pattern). pour éviter cela, il faut mettre cette "pattern" entre guillemets, tel que :
[[ $x = $y ]]
PS : en ksh 88, il FAUT utiliser "=", alors qu'en ksh93, c'est plutôt "==". toutefois, "=" reste acceptable ! pas vraiment pratique...
Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre. remove "%nospam" and ".invalid" to answer me.
Stephane Chazelas
2007-09-30, 15:24(+02), Thomas: [...]
DOSSIERPARENT=`dirname "$0" || exit`
j'aimerais que, si jamais un jour dirname faisait une erreur, le script se termine
dirname ne peut pas echouer (sauf que tu as oublié le --), puisqu'il ne fait qu'afficher le dirname de son argument. Sinon, tu peux toujours faire:
j'aimerais que, si jamais un jour netstat faisait une erreur, le script se termine (sans exécuter osascript ni ce qui suit)
La, c'est plus delicat. Voir la FAQ de comp.unix.shell.
-- Stéphane
Cyrille Lefevre
T'as quoi contre if ... then ... else ? Je te suggere :
if ! netstat -rn | grep -q 192.168.1.1 ; then exit 1 fi osascript etc.
ou alors la meme structure que ci-dessus, utilisant $? (mais j'ai tendance à penser que les if-then-else sont plus lisibles, donc maintenables).
mais pas portable. "! commande", quoique posix, n'est malheureusement pas supporté par tout les shells.
Regards, Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre. remove "%nospam" and ".invalid" to answer me.
T'as quoi contre if ... then ... else ? Je te suggere :
if ! netstat -rn | grep -q 192.168.1.1 ; then
exit 1
fi
osascript etc.
ou alors la meme structure que ci-dessus, utilisant $? (mais j'ai
tendance à penser que les if-then-else sont plus lisibles, donc
maintenables).
mais pas portable. "! commande", quoique posix, n'est malheureusement
pas supporté par tout les shells.
Regards, Cordialement,
Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%nospam@laposte.net.invalid
supprimer "%nospam% et ".invalid" pour me repondre.
remove "%nospam" and ".invalid" to answer me.