如何检查tcsh中的字符串是否为空

如何检查tcsh中的字符串是否为空

如何检查 tcsh 中的字符串是否为空?

在你惊慌之前,不,我不会用 tcsh 编写 shell 脚本。我这样问是因为我想在我的 .tcshrc 文件中使用它。

具体来说,我想在 tcsh 中执行与此 bash 代码等效的操作:

if [[ -z $myVar ]]; then
  echo "the string is blank"
fi

答案1

if ("$myVar" == "") then
  echo "the string is blank"
endif

请注意,在 csh 中,尝试访问未定义的变量是错误的。 (从 Bourne shell 的角度来看,它就好像set -u始终有效。)要测试变量是否已定义,请使用$?myVar

if (! $?myVar) then
  echo "myVar is undefined"
else
  if ("$myVar" == "") then
    echo "myVar is empty"
  else
    echo "myVar is non-empty"
  endif
endif

注意嵌套的使用if。您不能else if在此处使用,因为"$myVar" == ""即使第一个条件为真,这也会导致条件被解析。如果你想以同样的方式处理空和未定义的情况,首先设置变量:

if (! $?myVar) then
  set myVar=""
endif

if ("$myVar" == "") then
  echo "myVar is empty or was undefined"
else
  echo "myVar is non-empty"
endif

答案2

您可以使用测试(1)。例如:

% test -z "$myVar" && echo "the string is blank"

或者

% [ -z "$myVar" ] && echo "the string is blank"

两者都假设 $myVar 已设置。

答案3

使用tcsh,您可以使用${%var}构造来检查变量中的字符数var

if (${%var} == 0) then
  echo 'var is empty'
endif

相关内容