Bash脚本语法错误

时间:2015-09-09 07:38:43

标签: bash syntax-error

anothervar = 1
while [$anothervar -lt 1 ] do
    read a
    if [ 42 = $a ]; then
       $anothervar = 2
    else
        echo $a
    fi
done
  

获取第9行:意外令牌附近的语法错误`done'错误。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

如果将shell脚本粘贴到ShellCheck,您将看到shell脚本第2行的以下两个shell脚本分析消息:

  1. 你需要一个空格[和之前]。
  2. 在'do'之前使用分号或换行符(或引用以使其成为字面值)。
  3. 自动shell脚本分析建议对第2行进行两次更正并将第一行更改为anothervar=0以便执行while循环中的命令后,您的shell脚本是:

    anothervar=0
    while [ $anothervar -lt 1 ]; do # fixes 2 errors in this line
        read a  
        if [ 42 = $a ]; then  
            anothervar=2
        else
            echo $a
        fi
    done
    

答案 1 :(得分:1)

可替换地:

anothervar=0
while [[ $anothervar -lt 1 ]]
do
    read a
    if [[ 42 = $a ]]
    then
        anothervar=2
    else
        echo $a
    fi
done

Voila,没有分号,变量中的空格不再困扰你了。 ; - )

相关问题