为什么这个if语句会给我一个错误

时间:2014-09-07 16:45:45

标签: bash shell

有人可以解释为什么这个简单的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语句?

2 个答案:

答案 0 :(得分:6)

thenelse之间没有声明,因此这是语法错误。如果您真的想在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!"
相关问题