[SHELL/BASH] boucle qui contient script

Résolu/Fermé
Madmat59 Messages postés 98 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 22 décembre 2011 - 18 juin 2009 à 09:48
Madmat59 Messages postés 98 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 22 décembre 2011 - 18 juin 2009 à 13:56
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

Utilisateur anonyme
18 juin 2009 à 10:29
if faut quoter ta variable
car si elle n est pas definie elle est remplacé par du blanc
[ "$var" = "o" ]
0
Madmat59 Messages postés 98 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 22 décembre 2011 2
18 juin 2009 à 10:40
Ok merci je vais essayer
0
Madmat59 Messages postés 98 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 22 décembre 2011 2
18 juin 2009 à 10:52
ça fonctionne, merci bien !
0
Madmat59 Messages postés 98 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 22 décembre 2011 2
18 juin 2009 à 11:54
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
18 juin 2009 à 11:59
Salut,
if [ $vAjout = "o" -o  $vAjout = "O"  -o $vAjout= "n" -o $vAjout = "N" ] 
;-))
0
Madmat59 Messages postés 98 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 22 décembre 2011 2
18 juin 2009 à 12:34
Merci pour cette rapidité ! :D

le -o est équivalent à ou je pense ?

Cordialement Madmat59
0
Madmat59 Messages postés 98 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 22 décembre 2011 2
18 juin 2009 à 12:40
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
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
18 juin 2009 à 13:04
[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]$
;-))
0
Madmat59 Messages postés 98 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 22 décembre 2011 2
18 juin 2009 à 13:56
Merci ça fonctionne :-)
0