[SHELL/BASH] boucle qui contient script

Résolu
Bonjour,

J'ai encore un petit problème avec une boucle, je souhaite en faire une qui englobe tout le programme.

#!/bin/bash
while [ $vAjout = "o" ] || [ $vAjout = "O" ]
do
...
...
...
read -p "Souhaitez-vous ajouter une nouvelle machine (O/N) ?" vAjout
done

Il me detecte une erreur :
./essai.sh: line 2: [: =: unary operator expected
./essai.sh: line 2:  [: command not found

Cordialement Madmat59
Configuration: Linux
Epiphany 2.22

9 réponses

  1. Modérateur
    [tmpfs]$ cat foo.sh
    #! /bin/sh
    
    #set -xv
    
    while :
    do
    read -p "Voulez-vous continuer ? [oO|nN] : " choix
    if [ "$choix" = "o"  -o "$choix" = "O" -o "$choix" = "n"  -o "$choix" = "N" ]
    then echo "OK";continue
    else echo "Bye...";break
    fi
    done
    
    [tmpfs]$ ./foo.sh
    Voulez-vous continuer ? [oO|nN] : o
    OK
    Voulez-vous continuer ? [oO|nN] : O
    OK
    Voulez-vous continuer ? [oO|nN] : n
    OK
    Voulez-vous continuer ? [oO|nN] : N
    OK
    Voulez-vous continuer ? [oO|nN] : z
    Bye...
    [tmpfs]$
    ;-))
    1. Arf, ça ne fonctione pas il me met cette erreur :

      Souhaitez-vous ajouter une autre machine (O/N) ?
      n
      ./essai.sh: line 169: [: too many arguments
      1. Merci pour cette rapidité ! :D

        le -o est équivalent à ou je pense ?

        Cordialement Madmat59
        1. Modérateur
          Salut,
          if [ $vAjout = "o" -o  $vAjout = "O"  -o $vAjout= "n" -o $vAjout = "N" ] 
          ;-))
          1. J'ai un autre petit probleme, j'ai décidé de rajouter une petite vérification à la fin. cette vérification fonctionne mais il m'indique un message d'erreur : ./essai.sh: line 167: [: N=: unary operator expected

            #!/bin/bash
            until [ "$vAjout" = "n" ] || [ "$vAjout" = "N" ]
            ...
            ...
            ...
            while :
            do
            echo "Souhaitez-vous ajouter une autre machine (O/N) ?"
            read vAjout
            if [ $vAjout = "o" ] || [ $vAjout = "O" ] || [ $vAjout= "n" ] || [ $vAjout = "N" ]
            then
            echo "Choix correct"
            break
            else
            echo "Choix incorrect."
            continue
            fi
            done

            done
            1. if faut quoter ta variable
              car si elle n est pas definie elle est remplacé par du blanc
              [ "$var" = "o" ]