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/09/2006, à 17: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, à 17: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, à 17: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, à 17: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 lol


GtKo ViVe UbUnTu

Hors ligne

#5 Le 05/09/2006, à 18: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, à 18:28)


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#6 Le 05/09/2006, à 18: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, à 19:05)


GtKo ViVe UbUnTu

Hors ligne

#7 Le 05/09/2006, à 20: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, à 17: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 ? smile


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 tongue

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 wink)

Hors ligne

#9 Le 07/09/2006, à 02: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 big_smile .
m'enfin voila ,je voulez taté un peu le .sh tongue
et pour le petit souci de conception , je pense que sa vient du faite que c'est mon premier script lol

voila merci encore de m'avoir eclairé et surtout d'avoir jeté un oeil sur mon script.;)


GtKo ViVe UbUnTu

Hors ligne