bash shell脚本语法错误

Pro*_*mer 0 bash scripting syntax-error

我在bash脚本中编写了一个函数.但是,它抱怨语法.我真的看不出它是什么.....错误信息是[:缺少`]'

addem() {
            if [ $# -eq 0] || [ $# -gt 2 ]
            then
                    echo -1
            elif [ $# -eq 1 ]
            then
                    echo $[ $1 + $1 ]
            else
                    echo $[ $1 + $2 ]
            fi
    }
Run Code Online (Sandbox Code Playgroud)

pug*_*arx 12

在第一个之前需要一个空格].那就是:
改变:
if [ $# -eq 0] || [ $# -gt 2 ]
到:
if [ $# -eq 0 ] || [ $# -gt 2 ]

  • 一点历史:这是因为'['在历史上不是shell内置的,而是一个单独的可执行文件,它接收表达式作为参数并返回结果.如果你没有用空格包围'[',那么shell会在$ PATH中搜索不同的文件名(而不是找到它). (4认同)