Programmation shell sh

Bonjour,

j'essai d'écrire un script qui affiche un menu et qui en cas d'erreur sur le choix du menu retourne un message d'erreur voici mon code :

#!/bin/sh

echo "choix 1-: calcul de ma moyenne "
echo "choix 2-: calcul de la somme "
echo "choix 3-: le minimum "
echo "choix 9-:Quitter"

read choix

while [ choix != "9" ]
do
case
1 ) echo "Je calcule cela"
2 ) echo "Je fais ca immédiatement"
3 ) echo "boubourse c'est facile mais je le fais"
9 ) break
* ) echo "Hé tu sais lire ou pas "
esac
read choix
done

et ce me renvoi comme erreur apres lecture du choix :

./essai.sh: 12: Syntax error: newline unexpected (expecting word)

Pouvez vous m'aidez s'il vous plaît?

Une autre question également je voudrai savoir comment fait t-on la division entiere de 2 arguments ?

En vous remerciant
Configuration: Linux
Firefox 3.0.16

5 réponses

  1. Salut,

    lami20j@debian-acer:~/shell$ cat choix.sh 
    #!/bin/sh
    
    echo "choix 1-: calcul de ma moyenne "
    echo "choix 2-: calcul de la somme "
    echo "choix 3-: le minimum "
    echo "choix 9-:Quitter"
    
    read choix
    
    while [ choix != "9" ]
    do
        case $choix in
        '1' ) echo "Je calcule cela"
            ;;
        '2' ) echo "Je fais ca immédiatement"
            ;;
        '3' ) echo "boubourse c'est facile mais je le fais"
            ;;
        '9' ) break
            ;;
        * ) echo "Hé tu sais lire ou pas "
            ;;
       esac
    read choix
    done 
    lami20j@debian-acer:~/shell$ sh choix.sh 
    choix 1-: calcul de ma moyenne 
    choix 2-: calcul de la somme 
    choix 3-: le minimum 
    choix 9-:Quitter
    1
    Je calcule cela
    2
    Je fais ca immédiatement
    3
    boubourse c'est facile mais je le fais
    45
    Hé tu sais lire ou pas 
    9
    
    1. Merci beaucoup et pour la question de la division entière de deux arguments?
      1. Re,

        Ca aurait sympa de nous montrer ce que tu as essayé.

        Voici pour la division entière

        lami20j@debian-acer:~/shell$ cat division.sh 
        #!/bin/sh
        if [ $# -ne 2 ]
        then
          echo "Usage : $0 n1 n2"
          exit 1
        fi
        
        if [ $2 -eq 0 ]
        then
          echo "Division par zéro"
          exit 2
        else
          echo "$1 / $2 = " $(($1/$2))
        fi 
        lami20j@debian-acer:~/shell$ ./division.sh 
        Usage : ./division.sh n1 n2
        lami20j@debian-acer:~/shell$ ./division.sh 6
        Usage : ./division.sh n1 n2
        lami20j@debian-acer:~/shell$ ./division.sh 60 20
        60 / 20 =  3
        lami20j@debian-acer:~/shell$ ./division.sh 60 27
        60 / 27 =  2
        lami20j@debian-acer:~/shell$ ./division.sh 0 7
        0 / 7 =  0
        lami20j@debian-acer:~/shell$ ./division.sh 9 0
        Division par zéro
        
        1. Merci beaucoup lamij20 ! C'est que je début en script schell je suis en DUT informatique 1ere année et que j'avais tenté ca une expresion courte comme echo `expr $1 / $2 ` mais ca n'avait pas marché