-bash:[:=:一元运算符预期.什么时候没有参数

Ely*_*lye 3 bash shell

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

#!/bin/sh
if [ $1 = "-r" ]; then
    echo "I am here"
fi
Run Code Online (Sandbox Code Playgroud)

如果我运行. myscript.sh -r,它适用于消息I am here.

但是,如果我只是跑. myscript.sh,它投诉

-bash: [: =: unary operator expected

我的剧本中缺少什么?

小智 13

您需要在$ 1附近添加引号.

if [ "$1" = "-r" ]; then
    echo "I am here"
fi
Run Code Online (Sandbox Code Playgroud)

当$ 1为空时,如果[=" - r"]这是一个语法错误.


Sla*_*hin 5

你错过了报价:

if [ "$1" = "-r" ]; then
Run Code Online (Sandbox Code Playgroud)