Script shell variable set et vide

Kiki -  
jipicy Messages postés 41342 Statut Modérateur -
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
A voir également:

2 réponses

dubcek Messages postés 19021 Statut Contributeur 5 637
 
hello
$3 n'existe pas. Il faut soit compter le nombre paramètres avec $#, soit appeller le script avec :./script.sh put key ""
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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
;-))
0