我在路径/ root / user /中有一个名为MYNAME的文件 有一些价值说SSS_14_10_1992
当文件中存在值时,以下代码可以正常工作 但是当文件为空时,则抛出下面提到的错误
我正在从文件中读取此值并将其与通配符匹配并执行某些操作,当文件具有某些值时,以下代码正常工作,当文件为空时,我将收到条件错误
以下是我的代码
var=$(cat /root/user/MYNAME)
echo $var
su - uname<<!
pwd
if [ -z "$var" ]; then
echo "NAME SHOULD BE PROVIDED IN MYNAME FILE"
else
if [[ $var == SSS_14_10* ]]
then
echo "value is matched"
else
echo "value has not matched"
fi
fi
!
文件为空时 我收到以下错误:
: conditional binary operator expected
: syntax error near `SSS_14_10*'
: ` if [[ == SSS_14_10* ]]'
答案 0 :(得分:2)
尝试比较"$var"
(与引号)而不是$var
(不带引号)。这样,如果变量为空,则只需比较""
。
答案 1 :(得分:2)
不要像这样动态生成代码。将$var
的值作为参数传递给su
运行的脚本。
var=$(cat /root/user/MYNAME)
echo "$var"
su - uname<<'!' "$var"
pwd
if [ -z "$1" ]; then
echo "NAME SHOULD BE PROVIDED IN MYNAME FILE"
elif [[ $1 == SSS_14_10* ]]; then
echo "value is matched"
else
echo "value has not matched"
fi
!
请注意here-doc分隔符周围的单引号;这样可以确保su
按原样查看此处的文档,以便不再需要转义。