Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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. wink


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 smile


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 wink

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

Balkoth a écrit :

L'instruction cd . est totalement inutile wink

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

Trucutu_ a écrit :
Balkoth a écrit :

L'instruction cd . est totalement inutile wink

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

gene69 a écrit :

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