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

TSG*_*SGM 2 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
Run Code Online (Sandbox Code Playgroud)

给了我错误

./testscript: line 7: syntax error near unexpected token `else'
./testscript: line 7: `else'
Run Code Online (Sandbox Code Playgroud)

但是,如果我删除回声线上的注释,脚本运行正常.显然,在空if语句中注释行是一个问题.考虑到这一点,我该如何修复它以便我可以使用带有注释的空if语句?

Tom*_*ech 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
Run Code Online (Sandbox Code Playgroud)

更好的是,扭转你的逻辑:

#!/bin/bash

myvar="Hello"

if [[ -n "$myvar" ]]; then
    echo "It's a filled string!"
fi
Run Code Online (Sandbox Code Playgroud)