[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 ?
    0
    1. esac??? qu'est-ce que c'est?

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

        il marche super maintenant :) merci bcp :)
        0
        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"
          0
      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
        ;-))
        0