我有一个简单的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
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或更高版本
GNU bash版本4.3.46(2)-发行版(i686-pc-msys) 版权所有(C)2013自由软件基金会,Inc. 许可证GPLv3 +:GNU GPL版本3或更高版本http://gnu.org/licenses/gpl.html
这是免费软件;您可以自由更改和重新分发它。 在法律允许的范围内,不存在任何担保。
答案 0 :(得分:2)
需要两个括号:
#!/bin/bash
for ((i=2; i<4; ++i)); do
echo "dddd"
done
答案 1 :(得分:0)
将行尾从CRLF更改为LF。有很多方法可以做到这一点。您最喜欢的编辑器可以选择更改行尾,并在保存文件时保留现有的行尾。
最简单的方法是使用dos2unix
。要就地转换,请使用dos2unix bashtest.sh
。