Rechercher : dans
Par :

Script shell variable set et vide

Dernière réponse le 24 jan 2008 à 09:29:25 Kiki, le 24 jan 2008 à 06:47:09 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « script shell variable set et vide » dans :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
[Bash] La variable d'environnement PATH VoirLa variable d'environnement PATH I. Préambule II. C'est quoi le shell ? III. Définition IV. Séance de dissection V. Ajouter un répertoire à la variable PATH VI. Et puis... I. Préambule Sous les systèmes GNU/Linux qu'on le veuille ou...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...

1

dubcek, le 24 jan 2008 à 09:02:30

Hello
$3 n'existe pas. Il faut soit compter le nombre paramètres avec $#, soit appeller le script avec :./script.sh put key ""

Répondre à dubcek

2

 jipicy, le 24 jan 2008 à 09:29:25

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
;-))

Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy