user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 12-10-2014 22:56:45

koorosh
Membre

[Scripting SHELL] Problème avec la condition IF

Bonjour  à tous !

En tant normal, je poste jamais de post sur le devloppement car tout est logique mais  la se soir, c'est étrange .
Voici le code de mon programme:

7) echo -e "$blanc Détection du pacquet $rougefonce Strace $blanc sur le système ... $normal"
   rebours 5
   strace
   if [[ $? == 0 ]]
    then
     echo -e " $rougefonce Strace $blanc déjà installé [$vertclair OK $blanc] $normal"
   else
     echo -e "$rougefonce /!\ $orange l'outils n'est pas installé sur le système $rougefonce /!\ $normal"
     sleep 2
     echo -e "$blanc Démarrage de l'installation de $rougefonce Strace $normal"
     sleep 2
     aptitude install strace
     echo
     echo -e "Appuyer sur $vertclair<ENTER>$normal pour continuer ..."
   fi
   read x
   ;;

un bout de code tout facile mais quand  le programme "strace" est déjà installé, voila  comment  il se comporte :
1413147299.png

^^ avez-vous  une explication rationnel  a ca  ? tongue .
Est ce que se serai les limites du Shell  et qu'il commence  à  ne plus suivre la route et que  je devrai convertir tout mon script en python ?

// cela fait  2h15 que  j'y suis sur ce bug //

Dernière modification par koorosh (12-10-2014 23:04:11)


"Les paroles peuvent être plus tranchantes qu'un sabre affûté" écrit par Omar Khayam poète perse.

Hors ligne

#2 13-10-2014 19:01:32

IceF0x
#! Gourou Linux

Re : [Scripting SHELL] Problème avec la condition IF

Je vois, en fait tu ne dois pas faire ainsi,

tu as deux solution soit tu utilise la commande "command -V" soit le test if [ -f $fichier ].

Exemple

 icef0x@debian ~ $ command -V top
top est /usr/bin/top

Pour l'option "command", mais je préfère le test

if [ -f /usr/bin/top ]; then
   echo "la dépendance top est présente"
   top
else
   echo "la dépendance top est absente"
   aptitude install top
fi

Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#3 13-10-2014 21:03:09

koorosh
Membre

Re : [Scripting SHELL] Problème avec la condition IF

ah oui , enfaîte tu check si le fichier de la commande top est bien dans /usr/bin/  sinon tu l'install direct.

"Pourquoi faire compliqué alors  qu'on peux faire simple" wink Merci coyotus de la solution .


"Les paroles peuvent être plus tranchantes qu'un sabre affûté" écrit par Omar Khayam poète perse.

Hors ligne

#4 15-10-2014 00:10:18

notfound
Membre

Re : [Scripting SHELL] Problème avec la condition IF

Le plus propre est d'utiliser la commande :

[== Indéfini ==]
which top

Il faut éviter au maximum de mettre des variables en dur dans le code. Il se peut que pour une raison quelconque, ladite commande ne soit pas dans /usr/bin/top mais dans /path/to/top wink

Hors ligne

#5 15-10-2014 11:05:07

koorosh
Membre

Re : [Scripting SHELL] Problème avec la condition IF

Effectivement , la commande which est nickel . Du coup, je vais revoir l'intégralité de mon script afin de le rendre  plus léger que possible car apparemment le scripting SHELL  à ces limites lors de l'élaboration de script  à grande ampleur .


"Les paroles peuvent être plus tranchantes qu'un sabre affûté" écrit par Omar Khayam poète perse.

Hors ligne

#6 15-10-2014 19:25:26

IceF0x
#! Gourou Linux

Re : [Scripting SHELL] Problème avec la condition IF

Oui dans le cas ou on ne connais pas le chemin which est utile.

if [ -f $(which top) ]; then
   echo "la dépendance top est présente"
   top
else
   echo "la dépendance top est absente"
   aptitude install top
fi

Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

Pied de page des forums