Solución:
Las advertencias estándar sobre el uso de tcsh
/csh
aplicar (no lo use para guion, debido a sus limitaciones inherentes), pero aquí está la traducción:
if ( "$1" == "" ) then # parentheses not strictly needed in this simple case
echo "variable is empty"
else
echo "variable contains $1"
endif
Sin embargo, tenga en cuenta que si usara un nombre de variable arbitrario en lugar de $1
en lo anterior, el La declaración se rompería si esa variable aún no estuviera definida (mientras que $1
siempre está definido, incluso si está desarmado).
Para planificar el caso donde una variable, digamos $var
, puede no estar definido, se vuelve complicado:
if (! $?var) then
echo "variable is undefined"
else
if ("$var" == "") then
echo "variable is empty"
else
echo "variable contains $var"
endif
endif
los anidado if
s son obligatorios para evitar romper el guión, ya que tcsh
aparentemente no hace cortocircuito (un else if
el condicional de la rama se evaluará incluso si el if
se ingresa la rama; de manera similar, ambos lados de &&
y ||
las expresiones son aparentemente siempre evaluado: esto se aplica al menos con respecto al uso de variables no definidas).
Puedes probar esto (que se encuentra aquí):
set name
if ( ${%name} == 0 ) then
echo " Variable name has 0 characters as value."
endif
Tenga en cuenta que la persona que publicó esto tiene la siguiente firma:
Consejo estándar: evite la familia csh para las secuencias de comandos.
Nota: Esto se romperá si el nombre es una variable de entorno.
setenv name foobar ; set name ; echo '+++'$name'+++' ; unset name ; echo '==='$name'==='
++++++
===foobar===