#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 ?
Merci à tous ceux qui liront ce post, et Merci beaucoup à ceux qui tenteront de m'expliquer comment faire un script fonctionnel :):)
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 !!!
#!/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
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
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" (faut pas tapper je débute en script!
)
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
Hors ligne