Как я могу проверить, пуста ли переменная или нет в Tcsh Shell?
если мне нужно проверить, что если переменная пуста или нет для этого в оболочке bash, я могу проверить со следующим скриптом:
if [ -z "" ]
then
echo "variable is empty"
else
echo "variable contains "
fi
но мне нужно преобразовать его в оболочку tcsh.
3 ответов
стандартные предупреждения относительно использования tcsh
/csh
применить, но вот перевод:
if ( "" == "" ) then # parentheses not strictly needed in this simple case
echo "variable is empty"
else
echo "variable contains "
endif
обратите внимание, что если бы вы использовали произвольное имя переменной, а не здесь оператор сломался бы, если бы эта переменная еще не была определена (а
всегда определяется, даже если unset).
планирование случай, когда переменная, скажем $var
, не может быть определено, это становится сложнее:
if (! $?var) then
echo "variable is undefined"
else
if ("$var" == "") then
echo "variable is empty"
else
echo "variable contains $var"
endif
endif
на вложенные if
s требуются чтобы избежать нарушения сценария, как tcsh
по-видимому, не короткое замыкание (an else if
условие ветви будет оценено, даже если if
вводится ветвь; аналогично, обе стороны &&
и ||
выражения, казалось бы,всегда evaluated-это относится, по крайней мере, к использованию неопределенных переменных).
Вы можете попробовать это (найти здесь):
set name
if ( ${%name} == 0 ) then
echo " Variable name has 0 characters as value."
endif
обратите внимание, что лицо, разместившее это, имеет следующую подпись:
Стандартный совет: избегайте семейства csh для сценариев.
Примечание: это сломается, если name является переменной среды.
setenv name foobar ; set name ; echo '+++'$name'+++' ; unset name ; echo '==='$name'==='
++++++
===foobar===
EDIT: см. комментарий ниже.
if ( $?1 ) then
echo "variable is empty"
else
echo "variable contains "
endif