有人可以解释为什么这个简单的bash脚本:
#!/bin/bash
myvar="Hello"
if [[ -z "$myvar" ]]; then
# echo "It's an unfilled string"
else
echo "It's a filled string!"
fi
给我错误
./testscript: line 7: syntax error near unexpected token `else'
./testscript: line 7: `else'
但是,如果删除回显线上的注释,脚本运行正常。显然,在空if语句中注释行是一个问题。考虑到这一点,我该如何修复它以便我可以使用带有注释的空if语句?
答案 0 :(得分:6)
then
和else
之间没有声明,因此这是语法错误。如果您真的想在if
分支中不做任何操作,那么您可以使用:
(或true
)作为占位符:
#!/bin/bash
myvar="Hello"
if [[ -z "$myvar" ]]; then
# echo "It's an unfilled string"
:
else
echo "It's a filled string!"
fi
更好的是,改变你的逻辑:
#!/bin/bash
myvar="Hello"
if [[ -n "$myvar" ]]; then
echo "It's a filled string!"
fi
答案 1 :(得分:1)
这是不使用if else
语句的方式。
#!/bin/bash
myvar="Hello"
[[ -n "$myvar" ]] && echo "It's a filled string!"
你也可以使用它。
#!/bin/bash
myvar="Hello"
[[ -z "$myvar" ]] || echo "It's a filled string!"