如果我必须检查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/

10-11 08:03