如何检查 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