testuser=baduser
if [ $UESR != $testuser ]
then
echo "This is not $testuser"
else
echo "Welcome $testuser"
fi
如上会报错:[: !=: unary operator expected
如下设置会正常:
testuser=baduser
if [[ $UESR != $testuser ]]
then
echo "This is not $testuser"
else
echo "Welcome $testuser"
fi
为什么再加一层[]就解决了,原因是什么
Hi, 这个是对bash语法的问题
[ ... ] 这个相当于shell命令 test
[[ ... ]] 这个才是逻辑判断的语句
用 [ ... ] 的话,可以这样写,不能用在 if 中
[ $USER != $testuser ] && echo "This is not $testuser" || echo "Welcome $testuser"
等价于:test $USER != $testuser && echo "This is not $testuser" || echo "Welcome $testuser"
PS. 你贴出来的代码中 $UESR 拼错了,应该是 $USER。