SI je dois vérifier que si une variable est vide ou non pour cela dans Shell bash, je peux vérifier avec le script suivant:
if [ -z "$1" ]
then
echo "variable is empty"
else
echo "variable contains $1"
fi
Mais je dois le convertir en tcsh Shell.
Les avertissements standard concernant l’utilisation de tcsh
csh
s’appliquent, mais voici la traduction:
if ( "$1" == "" ) then # parentheses not strictly needed in this simple case
echo "variable is empty"
else
echo "variable contains $1"
endif
Notez cependant que si vous utilisiez un nom de variable arbitraire plutôt que $1
dans ce qui précède, l'instruction serait interrompue si cette variable n'était pas encore définie (alors que$1
est toujours défini , même si non défini).
Pour planifier le cas où une variable, telle que $var
, peut ne pas être définie , cela devient compliqué:
if (! $?var) then
echo "variable is undefined"
else
if ("$var" == "") then
echo "variable is empty"
else
echo "variable contains $var"
endif
endif
Lesif
s imbriqués sont obligatoires pour éviter de rompre le script, car tcsh
ne court-circuite apparemment pas (une condition de la branche else if
sera évaluée même si la branche if
est entrée; de même, les deux côtés des expressions &&
et ||
sont apparemment _/toujours évalué - cela s'applique au moins à l'utilisation de variables non définies).
Vous pouvez essayer ceci ( trouvé ici ):
set name
if ( ${%name} == 0 ) then
echo " Variable name has 0 characters as value."
endif
Notez que la personne qui a posté ceci a la signature suivante:
Conseil standard: évitez la famille csh pour les scripts.
Remarque: Ceci s’arrêtera si name est une variable d’environnement.
setenv name foobar ; set name ; echo '+++'$name'+++' ; unset name ; echo '==='$name'==='
++++++
===foobar===
EDIT: voir le commentaire ci-dessous.
if ( $?1 ) then
echo "variable is empty"
else
echo "variable contains $1"
endif