Bash for循环与括号工作在Linux中,而不是在Git Bash中

时间:2019-01-23 16:07:33

标签: linux bash cygwin

我有一个简单的bash循环,该循环在linux上运行良好,而不是在Windows中基于cygwin的本地Git Bash中运行
我有这个for循环:

  #!/bin/bash

    for (i=2; i<4; ++i); do
        echo "dddd"
    done

在Git Bash中,它给了我这个错误:

./test.sh: line 5: syntax error near unexpected token `newline'
./test.sh: line 5: ` done

Linux版本的bash

Amazon Linux版本20xx.0x可用。 [user1〜] $ bash --version GNU bash版本4.2.46(2)-发行版(x86_64-redhat-linux-gnu) 版权所有(C)2011 Free Software Foundation,Inc. 许可证GPLv3 +:GNU GPL版本3或更高版本

Git bash版本

GNU bash版本4.3.46(2)-发行版(i686-pc-msys) 版权所有(C)2013自由软件基金会,Inc. 许可证GPLv3 +:GNU GPL版本3或更高版本http://gnu.org/licenses/gpl.html

这是免费软件;您可以自由更改和重新分发它。 在法律允许的范围内,不存在任何担保。

2 个答案:

答案 0 :(得分:2)

需要两个括号:

#!/bin/bash

for ((i=2; i<4; ++i)); do
    echo "dddd"
done

答案 1 :(得分:0)

将行尾从CRLF更改为LF。有很多方法可以做到这一点。您最喜欢的编辑器可以选择更改行尾,并在保存文件时保留现有的行尾。

最简单的方法是使用dos2unix。要就地转换,请使用dos2unix bashtest.sh