Script shell variable set et vide
Kiki
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je realise actuellement un exercice en script shell, il est terminer et marche correctement sauf pour 1 cas :
voici un exemple d'utilisation
./script.sh put key value
le script simule une base de donnee, enfin la n'est pas le probleme, le probleme et qu'il faut gerer
./script.sh put key '' doit marcher, clef existe et valeur null
./script.sh put key doit renvoyer une erreur, aucune valeur n'est attribuer
Le probleme est que dans mon script je n'arrive pas a differencier une variable qui est set et null d'une variable non set.
Par exemple un
if [ -z $3 ]
then
echo 'error';
fi
va me renvoyer une erreur dans le 1er cas alors qu'il doit marcher, quelqu'un aurai il une solution ?
merci d'avance
Je realise actuellement un exercice en script shell, il est terminer et marche correctement sauf pour 1 cas :
voici un exemple d'utilisation
./script.sh put key value
le script simule une base de donnee, enfin la n'est pas le probleme, le probleme et qu'il faut gerer
./script.sh put key '' doit marcher, clef existe et valeur null
./script.sh put key doit renvoyer une erreur, aucune valeur n'est attribuer
Le probleme est que dans mon script je n'arrive pas a differencier une variable qui est set et null d'une variable non set.
Par exemple un
if [ -z $3 ]
then
echo 'error';
fi
va me renvoyer une erreur dans le 1er cas alors qu'il doit marcher, quelqu'un aurai il une solution ?
merci d'avance
Configuration: Windows XP Firefox 2.0.0.11
2 réponses
-
hello
$3 n'existe pas. Il faut soit compter le nombre paramètres avec $#, soit appeller le script avec :./script.sh put key "" -
Salut,
Comme l'a dit "dubcek", le comptage de paramètres me parait le plus adapté à ton cas :[tmpfs]$ set put key "" [tmpfs]$ echo $# 3 [tmpfs]$ set put key [tmpfs]$ echo $# 2
Donc un petit :if [ "$#" -lt 3 ]; then echo "ERROR"; fi
;-))