如果我必须检查bash shell中变量是否为空,则可以使用以下脚本进行检查:
if [ -z "$1" ]
then
echo "variable is empty"
else
echo "variable contains $1"
fi
但是我需要将其转换为tcsh shell。
最佳答案
有关使用tcsh
/ csh
的标准警告适用(由于其inherent limitations,因此请勿将其用于脚本编写),但这是翻译:
if ( "$1" == "" ) then # parentheses not strictly needed in this simple case
echo "variable is empty"
else
echo "variable contains $1"
endif
但是请注意,但是,如果您在上面使用任意变量名而不是$1
,则如果尚未定义(而 $1
始终被定义为,即使未设置),语句也会中断。要计划的情况,例如
$var
的变量可能未定义,这会很棘手:if (! $?var) then
echo "variable is undefined"
else
if ("$var" == "") then
echo "variable is empty"
else
echo "variable contains $var"
endif
endif
需要使用嵌套的if
来避免破坏脚本,因为tcsh
显然不会短路(即使输入了else if
分支,if
分支的条件也会得到评估;类似地,&&
和||
表达式的两面始终评估-至少在使用 undefined variable 时适用)。关于csh - 如何在tcsh Shell中检查变量是否为空?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22640093/