Script shell variable set et vide

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

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    $3 n'existe pas. Il faut soit compter le nombre paramètres avec $#, soit appeller le script avec :./script.sh put key ""
    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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