![unix shell 脚本中缺少“]”错误](https://linux22.com/image/72931/unix%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%BC%BA%E5%B0%91%E2%80%9C%5D%E2%80%9D%E9%94%99%E8%AF%AF.png)
我正在尝试运行一个小脚本来检查两个变量以查看它们是否为空。我得到了正确的输出,但如果还显示缺少右括号的错误。我尝试使用双括号和圆括号,但没有用。
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 的空间来确定您正在调用哪个命令。