[SHELL/BASH] boucle qui contient script [Résolu/Fermé]

Signaler
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
-
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
-
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

9 réponses


if faut quoter ta variable
car si elle n est pas definie elle est remplacé par du blanc
[ "$var" = "o" ]
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
Ok merci je vais essayer
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
ça fonctionne, merci bien !
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
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
Messages postés
40806
Date d'inscription
jeudi 28 août 2003
Statut
Non membre
Dernière intervention
10 août 2020
4 757
Salut,
if [ $vAjout = "o" -o  $vAjout = "O"  -o $vAjout= "n" -o $vAjout = "N" ] 
;-))
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
Merci pour cette rapidité ! :D

le -o est équivalent à ou je pense ?

Cordialement Madmat59
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
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
Messages postés
40806
Date d'inscription
jeudi 28 août 2003
Statut
Non membre
Dernière intervention
10 août 2020
4 757
[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]$
;-))
Messages postés
98
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
22 décembre 2011
2
Merci ça fonctionne :-)