Pages : 1
#1 Le 05/09/2006, à 16:09
- gtko
petit souci avec shell
bonjour , je suis en se moment meme en train de me faire un script en shell.
mais j'ai un petit souci ,je ne sais pa comment faire pour revenir sur une commande .
je m'explique avec un exemple
read 1
if [ "$1" = "y" ] || [ "$1" = "Y" ]
{
ma commande
}
elif ["$1" = "n" ] || [ "$1" = "N" ]
{
ma commande bis
}
else
{
mauvais choix reponder par y ou n mais pas $1
}
if
voila comment je fait pour revenir au choix , si l'utilisateur fait un mauvais choix.
j'espere que vous me comprenais merci d'avance .
GtKo ViVe UbUnTu
Hors ligne
#2 Le 05/09/2006, à 16:14
- illovae
Re : petit souci avec shell
j'ai viré ma réponse, elle correspondait pas à la question posé...
Hors ligne
#3 Le 05/09/2006, à 16:28
- jr95
Re : petit souci avec shell
C'est faisable avec une boucle while autour des if, du style
rep="ko"
while [ $rep != "ok" ]
do
read 1
if [ "$1" = "y" ] || [ "$1" = "Y" ]
{
ma commande
rep="ok"
}
elif ["$1" = "n" ] || [ "$1" = "N" ]
{
ma commande bis
rep="ok"
}
else
{
echo mauvais choix reponder par y ou n mais pas $1
}
done
La variable rep n'est là que pour simplifier le test de sortie de la boucle.
Hors ligne
#4 Le 05/09/2006, à 16:58
- gtko
Re : petit souci avec shell
ok je te remerci , je vais essayer .
je suis bete , j'y est pas pensé , sa doit etre le manque de pratique vue que je debute .
merci encore
GtKo ViVe UbUnTu
Hors ligne
#5 Le 05/09/2006, à 17:19
- kaworu
Re : petit souci avec shell
Salut !
ce genre de boucle est pas mal utile. Voici ma version :
answer=""
while [ "$answer" != "n" -a "$answer" != "N" -a "$answer" != "y" -a "$answer" != "Y" ]; do
echo -n "ma question [Y/N] "
read answer
done
case "$answer" in
y|Y) ma commande ;;
n|N) ma commande bis ;;
*) ;; # impossible d'arriver ici
esac
L'utilisation de case est pratique lorsque t'as des petites commandes, ça rend bcp plus clair (je trouve). Autrement si grosses commande utiliser if;then/elif/else/fi.
Evite d'utiliser des variables comme $1 qui, dans un script, est le premier argument.
Dernière modification par kaworu (Le 05/09/2006, à 17:28)
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#6 Le 05/09/2006, à 17:56
- gtko
Re : petit souci avec shell
ok kaworu je te remercie pour cette petit expliquation qui va me simplifier la vie on diré.
tenez pour que vous y voyez plus clair je copie mon code .
#!/bin/sh
echo "taper votre mots de passe:"
#sudo mv /etc/apt/sources.list /etc/apt/sources-backup.list
echo "--remplacement de la sources.list"
#sudo cp sources.list /etc/apt/
echo "ok"
echo "--mise a jour de la base apt"
#sudo apt-get update
echo"ok"
echo "--installation des post.php?action=post&tid=60444formats audio et video"
#sudo apt-get install gstreamer0.10-ffmpeg gstreamer0.10-plugins-ugly libxine-extracodecs libdvdcss2 w32codecs
echo "ok"
echo "--installation des formats rar et ace "
#sudo apt-get install unrar unace
echo "ok"
echo "--installation des formats flash-player et java "
flashverif="ko"
while [ $flashverif != "ok" ]; do
echo -n "voulez vous installer flash-player 7 ?(y/n):"
read flash
if [ "$flash" = "y" ] || [ "$flash" = "Y" ]; then
{
echo "-installation flash"
wget http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_7_linux.tar.gz
tar -zxvf install_flash_player_7_linux.tar.gz
cd install_flash_player_7_linux
sudo apt-get install gsfonts gsfonts-x11
echo ""
echo ""
echo ""
echo "#####################INSTRUCTION###############################"
echo "Appuyez sur la touche ENTRÉE dans le terminal."
echo "Appuyez une seconde fois sur la touche ENTRÉE."
echo "Fermez tous les navigateurs Web ouverts avant d appuyez à nouveau sur ENTRÉE."
echo "Maintenant, vous pouvez confirmer l installation en appuyant sur la touche y suivi de ENTRÉE."
echo "Terminez l installeur en appuyant sur n suivi de ENTRÉE."
echo "##############################################################"
echo ""
(sh flashplayer-installer)
cd ..
rm install_flash_player_7_linux.tar.gz
sudo rm -r install_flash_player_7_linux
flashverif="ok"
echo "ok"
}
elif [ "$flash" = "n" ] || [ "$flash" = "N" ]; then
{
echo "installation flash = non "
flashverif="ok"
echo "ok"
echo""
echo""
}
else
{
echo "veuillez repondre par y ou n mais pas par ""$flash"
}
fi
done
javaverif="ko"
while [ $javaverif != "ok" ]; do
echo -n "voulez vous installer java ?(y/n):"
read java
if [ "$java" = "y" ] || [ "$java" = "Y" ]; then
{
echo "-installation de java"
wget http://perso.orange.fr/gtko/jre-1_5_0_06-linux-i586.bin
chmod +x jre-1_5_0_06-linux-i586.bin
sudo ./jre-1_5_0_06-linux-i586.bin
sudo mv -f jre1.5.0_06/ /opt/
(cd /usr/lib/firefox/plugins
sudo ln -s /opt/jre1.5.0_06/plugin/i386/ns7/libjavaplugin_oji.so
)
sudo ln -s /opt/jre1.5.0_06/bin/java /usr/local/bin/java
sudo ln -s /opt/jre1.5.0_06/bin/policytool /usr/local/bin/policytool
JAVA_HOME=/opt/jre1.5.0_06
javaverif="ok"
}
elif [ "$java" = "n" ] || [ "$java" = "N" ]; then
{
echo "installation de java = non "
javaverif="ok"
echo "ok"
echo""
echo""
}
else
{
echo "veuillez repondre par y ou n mais pas par ""$java"
}
fi
done
voila maintenant, j'ai un autre probleme que je ne comprend pas trop .
le voila
--installation des formats flash-player et java
voulez vous installer flash-player 7 ?(y/n):n
non_libre.sh: line 38: [: "]" manquant
installation flash = non
ok
voulez vous installer java ?(y/n):n
non_libre.sh: line 89: [: "]" manquant
installation de java = non
ok
merci de votre aide .
Dernière modification par gtko (Le 05/09/2006, à 18:05)
GtKo ViVe UbUnTu
Hors ligne
#7 Le 05/09/2006, à 19:01
- gtko
Re : petit souci avec shell
bon bé j'ai finit le script , il ya 2 erreur pour l'instant mais il marche tres bien .
je vais vous donner le lien pour que vous puissez le perfectionner ou le tester si vous le souhaiter .
http://perso.orange.fr/gtko/format-non_libre.tar.gz
voila en esperant que sa puisse aider quelqu'un .
merci de votre aide.;)
GtKo ViVe UbUnTu
Hors ligne
#8 Le 06/09/2006, à 16:52
- Balkoth
Re : petit souci avec shell
Ben je vois surtout un souci de conception dans ce script :
pourquoi installer à partir d'archives alors que tout est disponible dans les dépôts ?
Du coup, c'est sudo apt-get install sun-java5-jre pour installer la machine virtuelle java (sun-java5-plugin pour le plugin firefox) et
sudo apt-get install flashplugin-nonfree pour installer le plugin flash.
cf la doc :
http://doc.ubuntu-fr.org/applications/java
http://doc.ubuntu-fr.org/applications/formats_non-libres#flash_non-libre_de_macromedia
Plus simple non ?
Sinon, au début tu fais :
#sudo cp sources.list /etc/apt/
Faudrait vérifier que le fichier sources.list existe dans le dossier courant, pour être plus propre.
Enfin vu que tu fourni le fichier et le script dans la même archive, ça ne devrait pas poser problème.
ligne 27 :
echo "--installation des post.php?action=post&tid=60444formats audio et video"
T'as du te planter dans un copier-coller
ligne 38 :
sudo apt-get install unrar unace
Tu peux rajouter p7zip
Sinon, il y a easyubuntu, automatix, et quelques autres scripts qui trainent sur le forum...
(m'enfin moi aussi j'ai mon script perso )
Hors ligne
#9 Le 07/09/2006, à 01:40
- gtko
Re : petit souci avec shell
merci de ton aide Balkoth.
j'avait pas vue ces erreurs et je ne savait pas qu'on pouvez installer java et flash par les deb .
j'etait encore bloquer sur les archives .
m'enfin voila ,je voulez taté un peu le .sh
et pour le petit souci de conception , je pense que sa vient du faite que c'est mon premier script
voila merci encore de m'avoir eclairé et surtout d'avoir jeté un oeil sur mon script.;)
GtKo ViVe UbUnTu
Hors ligne
Pages : 1