Script bash

Fermé
j3ff_std - 5 févr. 2010 à 15:12
 j3ff_std - 5 févr. 2010 à 16:53
Bonjour,

J'aimerais qu'on ne puisse pas rentrer de chaine vide dans le input ou de ne pas faire direct "enter"
Donc l'input doit obligatoirement contenir quelque chose.

Avec ce code il me renvoie une erreur du type:
[: 10:  : unexpected operator


echo -n "Enter your reason: "
read name

while [ $name = " " ]; 
do
echo -n "Enter your reason: "
read name
done 


Quelqu'un aurait-il une solution?

merci d'avance

5 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
5 févr. 2010 à 15:44
Salut,

Il faut quoter ta variable et ne pas laisser un espace entre les guillemets :

while [ "$name" = "" ]; 
1
miramaze Messages postés 1429 Date d'inscription mercredi 29 juillet 2009 Statut Contributeur Dernière intervention 1 mai 2022 92
5 févr. 2010 à 15:33
Salut déjà de mettre des parenthèses pas des accolades
0
dubcek Messages postés 18728 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 29 mai 2024 5 615
5 févr. 2010 à 15:46
hello
 name=""
while [ -z "$name" ] ; do
echo -n "Enter your reason: " ; read name 
done
0
miramaze Messages postés 1429 Date d'inscription mercredi 29 juillet 2009 Statut Contributeur Dernière intervention 1 mai 2022 92
5 févr. 2010 à 15:47
Ah merde je pensais que c'étais obligatoire les parenthèses et pas d'accolades, je me tais ;)
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 896
5 févr. 2010 à 15:56
En plus ce n'est pas des accolades ( { } ), c'est des crochets ( [ ] );-))
0

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

Posez votre question
merci dubcek ça fonctionne ;-)
0