我有我的 shell 脚本,myscript.sh以下

#!/bin/sh
if [ $1 = "-r" ]; then
    echo "I am here"
fi

如果我运行. myscript.sh -r,它与消息配合得很好I am here

但如果我只是跑. myscript.sh,它抱怨

-bash: [: =: unary operator expected

我的脚本中缺少什么?

答案

您需要添加 1 美元左右的报价。

if [ "$1" = "-r" ]; then
    echo "I am here"
fi

当 $1 为空时,您会得到 if [ = “-r”] 这是一个语法错误。

来自: stackoverflow.com