Bash脚本语法错误“做”?

#!/bin/sh for repo in repoA, repoB, repoC; do echo Cloning $repo. done 

当我执行这个( sh myscript.sh )时,我得到以下内容:

 myscript.sh: line 2: syntax error near unexpected token `$'\r'' 'yscript.sh: line 2: `for repo in repoA repoB repoC; 

想法?

Solutions Collecting From Web of "Bash脚本语法错误“做”?"

Windows在每行的末尾使用两个字符: '\r''\n' 。 Unix只使用'\n' 。 据推测,你正在编辑这个记事本,并在cygwin中运行,这就是为什么你得到这个错误。

下载Notepad ++编辑器,该编辑器在Edit / EOL Conversion下具有unix样式行尾的选项。

你的脚本可能写在Windows机器上,包含DOS换行符CR LF而不是Unix, LF

所以你只需要转换换行符。

你可以使用各种工具,但我的首选是dos2unix

要在CentOS上安装它,FedoraRHEL可以:

 sudo yum install dos2unix 

Ubuntu或Debian上安装dos2unix

 sudo apt-get install tofrodos sudo ln -s /usr/bin/fromdos /usr/bin/dos2unix 

现在要做转换:

 dos2unix your_script.sh 

然后运行脚本

 sh your_script.sh 

你忘了分号:

 #!/bin/sh for repo in repoA repoB repoC; do echo Cloning $repo. done 

请注意,repoA,repoB和repoC在本上下文中被视为变量。