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 03/07/2008, à 21:47

mirage59

[bash] [Resolu] Script shell avec if else ne fait qu'une instruction

Bonsoir à toutes et à tous,

Voila je suis en train d'écrire un petit script conditionnel mais une fois lancé,
celui ci n'exécute qu'une seule instruction même si la condition n'est pas rempli.

Voici le bout de code :

#!/bin/bash
echo -e "Taper le nom du fichier .dll manquant et appuyé sur Entrée \n:"
read nomdll
if [ "echo($nomdll | grep ".dll")" ]
then 
wget http://files.my-dll.com/mydll-"$nomdll".zip
else 
wget http://files.my-dll.com/mydll-"$nomdll".dll.zip 
fi

L'utilisateur entre le nom du fichier manquant, si celui-ci contient ".dll" (donc l'extension hein ;-p)
Alors le script lance le 1er wget
S'il n'y a pas le ".dll" dans le nom, le script lance le 2iéme wget (dont l'url contient .dll)

Le problème c'est que quand je tape "test" (donc sans .dll) il lance le 1er wget
(donc tente de télécharger test.zip et non pas test.dll.zip comme je veux)

Quelqu'un comprend pourquoi cela ne fonctionne pas ?
Où est mon erreur hmm ?

Merci à tous ceux qui liront ce post, et Merci beaucoup à ceux qui tenteront de m'expliquer comment faire un script fonctionnel wink:):)

EDIT: lorsque je change le code par :

#!/bin/bash
echo -e "Taper le nom du fichier .dll manquant et appuyé sur Entrée \n:"
read nomdll
if [ "echo($nomdll | grep "^[ [.dll] ]*$")" ]
then wget http://files.my-dll.com/mydll-"$nomdll".zip
else
wget http://files.my-dll.com/mydll-"$nomdll".dll.zip 
fi

Et que je tape test.dll le script lance le 2iéme wget, donc j'obtient test.dll.dll :s

Dernière modification par mirage59 (Le 03/07/2008, à 22:30)


L'homme le plus heureux est celui qui fait le bonheur d'un plus grand nombre d'autres.
[Diderot]

Hors ligne

#2 Le 03/07/2008, à 22:15

mirage59

Re : [bash] [Resolu] Script shell avec if else ne fait qu'une instruction

Bon bah j'ai enfin réussi a faire un script qui marche !!! big_smile

#!/bin/bash
echo -e "Taper le nom du fichier .dll manquant et appuyé sur Entrée \n:"
read nomdll
test=`echo $nomdll | grep -v .dll`
if [ -z "$test" ]
then
      wget http://files.my-dll.com/mydll-"$nomdll".zip
else 
     wget http://files.my-dll.com/mydll-"$nomdll".dll.zip
fi

Voila, si quelqu'un fait un script comme moi (et que comme moi il "découvre" les script shell)
mon post l'aidera, enfin je l'éspère!

Bonne soirée à toutes et à tous smile

Dernière modification par mirage59 (Le 03/07/2008, à 22:16)


L'homme le plus heureux est celui qui fait le bonheur d'un plus grand nombre d'autres.
[Diderot]

Hors ligne

#3 Le 03/07/2008, à 22:54

philpinch

Re : [bash] [Resolu] Script shell avec if else ne fait qu'une instruction

Une autre solution

#!/bin/bash

echo -e "Taper le nom du fichier .dll manquant et appuyé sur Entrée \n:"
read nomdll

if [ `expr index "$nomdll" .dll` -gt 0 ]
then 
    wget http://files.my-dll.com/mydll-"$nomdll".zip
else
    wget http://files.my-dll.com/mydll-"$nomdll".dll.zip
fi


Phil Pinch
IT Trainer & Consultant

Meet me at http://philpinch.free.fr

Hors ligne

#4 Le 03/07/2008, à 23:00

mirage59

Re : [bash] [Resolu] Script shell avec if else ne fait qu'une instruction

Merci philpinch ta solution est plus "propre" wink (faut pas tapper je débute en script! tongue)

Vu que tu est encore debout pourrait tu jeter un coup d'oeuil a mon autre post?
http://forum.ubuntu-fr.org/viewtopic.php?id=233909

Car maintenant mon problème c'est que si l'utilisateur tape vtex.DLL (ou VTEX.dll ou encore VTEX.DLL tout en majuscule), la fonction n'est plus valable car vtex.dll existe mais pas vtex.DLL

Connais tu une astuce ?

Dernière modification par mirage59 (Le 03/07/2008, à 23:06)


L'homme le plus heureux est celui qui fait le bonheur d'un plus grand nombre d'autres.
[Diderot]

Hors ligne

#5 Le 03/07/2008, à 23:15

philpinch

Re : [bash] [Resolu] Script shell avec if else ne fait qu'une instruction

#!/bin/bash
clear

echo -e "Taper le nom du fichier .dll manquant et appuyé sur Entrée \n:"
read nomdll

n=`echo $nomdll | tr A-Z a-z`

if [ `expr index "$n" .dll` -gt 0 ]
then 
    wget http://files.my-dll.com/mydll-"$n".zip
else
    wget http://files.my-dll.com/mydll-"$n".dll.zip
fi


Phil Pinch
IT Trainer & Consultant

Meet me at http://philpinch.free.fr

Hors ligne