Script shell variable set et vide

Fermé
Kiki - 24 janv. 2008 à 06:47
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 24 janv. 2008 à 09:29
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 18784 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 avril 2025 5 630
24 janv. 2008 à 09:02
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
24 janv. 2008 à 09:29
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