我有两个变量
var=""
var1=abcd
这是我的 shell 脚本代码
if [ $var == $var1 ]; then
do something
else
do something
fi
如果我运行此代码,它将提示警告
[: ==: unary operator expected
我该如何解决这个问题?
最佳答案
自值$var
是空字符串,这个:
if [ $var == $var1 ]; then
扩展到这个:
if [ == abcd ]; then
这是一个语法错误。
您需要引用参数:
if [ "$var" == "$var1" ]; then
您也可以使用
=
而不是 ==
;这是原始语法,它更易于移植。如果你使用 bash,你可以使用
[[
语法,不需要引号:if [[ $var = $var1 ]]; then
即便如此,引用变量引用并添加引号也没有坏处:
if [[ "$var" = "$var1" ]]; then
可能会为 future 的读者节省一点时间来记住是否
[[
... ]]
需要他们。
关于shell - 将空值与字符串进行比较时,shell 脚本中需要一元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15573679/