#1 Le 05/10/2006, à 14:03
- Trucutu_
[Résolu] Problème if-then en script shell
Bonjour,
J'ai un petit problème avec le script suivant:
#!/bin/sh
gvimPath=`which gvim`
# echo "$gvimPath"
test -x "$gvimPath"
echo $?
if [ "$?" != 0 ]; then
echo "Gvim n'est pas installe"
exit
else
cd . # go in the current directory
ls # liste files of the directory
gvim test.txt
fi
#eof
Il ne rentre pas dans le then si $? = 1. J'ai tenté pas mal de choses ( "$?" = 1 , "$?" != "0" , $? !=0 ....), et là, je sèche un peu...
Une idée ?
merci d'avance
#2 Le 05/10/2006, à 14:20
- foobar2000
Re : [Résolu] Problème if-then en script shell
$? retourne la sortie de la derniere commande executee. En faisant "echo $?" tu as change sa valeur deja.
Aucun rapport avec le logiciel du même nom.
Hors ligne
#3 Le 05/10/2006, à 14:29
- trucutu
Re : [Résolu] Problème if-then en script shell
évidemment...
merci
La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !
Hors ligne
#4 Le 05/10/2006, à 14:48
- Balkoth
Re : [Résolu] Problème if-then en script shell
Tu peux aussi simplifier comme ça :
#!/bin/sh
gvimPath=`which gvim`
# echo "$gvimPath"
if [ ! -x "$gvimPath" ]; then
echo "Gvim n'est pas installe"
exit
else
ls # liste files of the directory
gvim test.txt
fi
#eof
L'instruction cd . est totalement inutile
Hors ligne
#5 Le 05/10/2006, à 15:21
- kaworu
Re : [Résolu] Problème if-then en script shell
moi j'aurais fais :
#!/bin/bash
if which gvim 2>/dev/null; then
ls # liste files of the directory
gvim test.txt
else
echo "Gvim n'est pas installe"
exit 1
fi
which gvim 2>/dev/null
le if va tester la valeur renvoyé par which (qui est 0 si la commande existe ou 1 si elle n'existe pas) et le 2>/dev/null va cacher les erreurs, c'est à dire que si la commande se passe bien, lw which gvim affiche le path de gvim et rentre dans le if (en shell 0 est VRAI et le reste est faux) et si la commande se passe pas bien l'erreur qu'affiche which est "cachée" et il rentre dans le else.
Dernière modification par kaworu (Le 05/10/2006, à 15:22)
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#6 Le 05/10/2006, à 15:38
- Trucutu_
Re : [Résolu] Problème if-then en script shell
L'instruction cd . est totalement inutile
Sauf si le script lancé ne se situe pas dans le répertoire où sont effectuées les opérations, non ?
Merci, pour ces proposition de modif' et les explications, je vais les étudier.
#7 Le 05/10/2006, à 16:51
- gene69
Re : [Résolu] Problème if-then en script shell
Balkoth a écrit :L'instruction cd . est totalement inutile
Sauf si le script lancé ne se situe pas dans le répertoire où sont effectuées les opérations, non ?
Merci, pour ces proposition de modif' et les explications, je vais les étudier.
non parce que le "cd ." signifiera d'aller au dossier ./ du répertoire duquel le script est lancé.
à mon avis.
Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion
Hors ligne
#8 Le 05/10/2006, à 18:28
- Balkoth
Re : [Résolu] Problème if-then en script shell
non parce que le "cd ." signifiera d'aller au dossier ./ du répertoire duquel le script est lancé.
Oui c'est ça.
Sinon, encore une autre version du script :
#!/bin/sh
if [ -x "$(which gvim)" ]; then
ls # liste files of the directory
gvim test.txt
else
echo "Gvim n'est pas installe"
exit 1
fi
Hors ligne