[Bash] plusieurs erreurs

Résolu
bonjour tout le monde (duh ça m'énèrve de poster que pour demander de l'aide ; j'aimerais bien aider un jour aussi :p )

On a commencé le bash à ma formation, mais les cours se sont résumés à "Aujourd'hui, pour commencer le bash.........vous allez vous documenter sur le net et apprendre tout seul et vous allez nous faire un script utile!"
mdrrr quelle précision -.-

Enfin bon, j'ai trouvé une petite idée intéressante, c'était de concevoir un script qui génère un fichier /etc/network/interfaces
Avec les docs que je trouve, j'arrive à faire un truc qui semble marcher... Mais je tombe sur différentes erreurs après plusieurs essais et je reste bloqué sur celle-ci :
./interfacemaker.sh: line 37: syntax error near unexpected token `"Choisir un nom pour votre fichier :"'
./interfacemaker.sh: line 37: `echo "Choisir un nom pour votre fichier :"'


voici le script en entier :
#!/bin/bash
clear
echo "Bonjour et bienvenue dans InterfacesMaker"
echo 
echo "Quel est le nom du périphérique réseau ? (en général eth0)"
read ethernet
echo "Votre carte réseau : $ethernet"
echo
echo "Utilisez-vous un serveur DHCP ? (o/n)"
read replytype

case $replytype in
[yYoO]*)
	echo "Quel est l'IP attribuée à la machine ?"
	read address
	echo "Adresse : $address"
	echo 
	echo "Quel est votre masque sous-réseau ?"
	read netmask
	echo "Masque sous-réseau : $netmask"
	echo 
	echo "Quel est l'IP du pont réseau ?"
	read gateway
	echo "Pont réseau : $gateway"
	echo 
	echo "Donnez une IP de serveur DNS."
	read dnsserver1
	echo "Serveur DNS : $dnsserver1"
	echo "" ;;
[nN]*)	echo "DHCP" ;;
echo "Choisir un nom pour votre fichier :"
read namefile
echo "Génération du fichier interfaces $namefile.conf dans votre répertoire home"

if [ $replytype = "o" ]
then
echo -e "# Fichier généré grâce au script interfacemaker.sh \n \nauto lo \niface lo inet loopback \n \nauto $ethernet\niface $ethernet inet static \n	address $address \n	netmask $netmask \n	gateway $gateway \n	dns-nameservers $dnsserver1 \n" > $HOME/$namefile.conf

elif [ $replytype = "o" ]
then
echo -e "# Fichier généré grâce au script interfacemaker.sh \n \nauto lo \niface lo inet loopback \n \nauto $ethernet\niface $ethernet inet static \n	address $address \n	netmask $netmask \n	gateway $gateway \n	dns-nameservers $dnsserver1 \n" > $HOME/$namefile.conf

else
echo -e "# Fichier généré grâce au script interfacemaker.sh \n \nauto lo \niface lo inet loopback \n \nauto $ethernet \niface $ethernet inet dhcp \n" > $HOME/$namefile.conf
fi

echo "Fichier généré. Voulez-vous l'ouvrir dans un éditeur de texte ?"
echo "o/n"
read openfile1

case $openfile1 in
[yYoO]*)
	echo "Quel interface graphique utilisez-vous ?"
	echo "1/2/3/4"
	echo
	echo "1. GNOME"
	echo "2. KDE"
	echo "3. XFCE"
	echo "4. Autre ou pas d'interface"
	read openfile2

	if [ $openfile2 = "1" ]
	then
	echo "Ouverture de gedit"
	gedit $HOME/$namefile.conf

	elif [ $openfile2 = "2" ]
	then
	echo "Ouverture de kate"
	kate $HOME/$namefile.conf

	elif [ $openfile2 = "3" ]
	then
	echo "Ouverture de xedit"
	xedit $HOME/$namefile.conf

	else
	echo "Ouverture de GNU Nano"
	editor $HOME/$namefile.conf
	fi ;;

[nN]*)
	echo "" ;;
clear
echo "Votre nouveau fichier interfaces est crée. Pour l'utiliser sur votre machine, tapez les commandes suivantes en root :"
echo "cp /etc/network/interfaces /etc/network/interfaces.back"
echo "rm /etc/network/interfaces"
echo "rename $HOME/$namefile.conf /etc/network/interfaces"
exit


Aurai-je raté quelque chose??

merci de votre aide :)
Configuration: Linux Debian
Firefox 1.0.4

4 réponses

  1. [nN]*) echo "DHCP" ;;
    echo "Choisir un nom pour votre fichier :"

    N'aurais-tu pas oublié un "esac" entre ces deux lignes ?
    1. esac??? qu'est-ce que c'est?

      désolé je suis le parfait n00b en bash :p
      1. en tout cas le rajouter ça a résolu le problème :p

        il marche super maintenant :) merci bcp :)
        1. De rien :)

          case variable
          <cas1> ) action1 ;;
          <cas2> ) action2 ;;
          esac (= fin de case !)

          En fait : "case <variable>" defini des actions en fonctions de cas (comparaison de la variable avec les cas)
          Les cas ici sont des "expressions régulieres"
      2. Modérateur
        Salut,

        Tant qu'à faire rajoutes en un (esac) entre "echo "" ;;" et "clear" :
        [nN]*)
        	echo "" ;;
        clear
        Ce qui donnera :
        [nN]*)
        	echo "" ;;
        esac
        clear
        ;-))