[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. if faut quoter ta variable
    car si elle n est pas definie elle est remplacé par du blanc
    [ "$var" = "o" ]
    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. Modérateur
        Salut,
        if [ $vAjout = "o" -o  $vAjout = "O"  -o $vAjout= "n" -o $vAjout = "N" ] 
        ;-))
        1. Merci pour cette rapidité ! :D

          le -o est équivalent à ou je pense ?

          Cordialement Madmat59
          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. 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]$
              ;-))