我正在尝试运行一个小脚本来检查两个变量以查看它们是否为空。我得到了正确的输出,但如果还显示缺少右括号的错误。我尝试使用双括号和圆括号,但没有用。
var=""
non="hi"
if ([ -z "$var"] && [ -z "$non"])
then
echo "both empty"
else
echo "has data"
fi
输出:
line 6: [: missing `]'
has data
答案1
您需要在“$non”和]之间有一个空格,并且不需要():
if [ -z "$var" ] && [ -z "$non" ]
答案2
正如安迪·道尔顿在他的回答中所说,你需要在之间留一个空格“$非”和右方括号]像这样:
[ -z "$non" ]
我只是想增加一点动力,说明为什么需要这样做。在 bash 中,方括号是命令(你可以尝试男人 [看看,这是手册测试命令),因此您需要 bash 的空间来确定您正在调用哪个命令。