Script shell variable set et vide

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
Configuration: Windows XP
Firefox 2.0.0.11

2 réponses

  1. Contributeur
    hello
    $3 n'existe pas. Il faut soit compter le nombre paramètres avec $#, soit appeller le script avec :./script.sh put key ""
    0
    1. Modérateur
      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