Dans ce qui suit, je voudrais vérifier si un nom de variable est définie:Échapper dans les comparaisons de test
$ set hello
$ echo $1
hello
$ echo $hello
$ [[ -z \$$1 ]] && echo true || echo false
false
Depuis $hello
est unset, je pense que le test retour true
. Quel est le problème ici? Je suppose que j'échappe incorrectement au dollar.
TYIA
Une autre façon de 'ksh':' typeset -n tmp; tmp = 1 $; [[-z $ tmp]] ... '(J'aime éviter autant que possible" eval "(même si c'est sûr dans cette circonstance) –
@Dennis: merci, il est bon de savoir qu'il y a un moyen dans ksh aussi (et je n'aime pas 'eval' non plus, mais c'est la seule façon portable). – Gilles