命令行中的同一bash脚本不会';从文件运行时无法工作

命令行中的同一bash脚本不会';从文件运行时无法工作,bash,cygwin,Bash,Cygwin,我正试图从cygwin学习Bash脚本。当我在命令提示符下手动键入以下几行时,一切正常,我看到屏幕上打印了从1到10的数字 for i in {1..10}; do echo $i; done 但是,如果我将脚本保存到一个文件(test.sh)并运行“/test.sh”,我会看到以下错误 ./test.sh: line 1: syntax error near unexpected token `$'do\r'' '/test.sh: line 1: `for i in {1..10}

我正试图从cygwin学习Bash脚本。当我在命令提示符下手动键入以下几行时,一切正常,我看到屏幕上打印了从1到10的数字

for i in {1..10}; do
    echo $i;
done
但是,如果我将脚本保存到一个文件(test.sh)并运行“/test.sh”,我会看到以下错误

./test.sh: line 1: syntax error near unexpected token `$'do\r''
'/test.sh: line 1: `for i in {1..10}; do
这对我来说似乎很奇怪。我想知道为什么同一个脚本在命令行中运行良好,而不是在文件中运行

谢谢,
德里克

这个
\r
是一个提示。您的文件可能有CRLF(
\r\n
)行结尾,bash解释器无法正常处理。更改编辑器设置以使用Unix样式(
\n
)行结尾,或在文件上运行
/usr/bin/dos2unix
,以重置行结尾。

\r
是一个提示。您的文件可能有CRLF(
\r\n
)行结尾,bash解释器无法正常处理。更改编辑器设置以使用Unix样式(
\n
)行结尾,或在文件上运行
/usr/bin/dos2unix
,以重置行结尾。

使用Unix文本编辑器vi的另一种可能解决方案:

使用
vi filename.sh
命令在vi编辑中打开文件

键入vi
:set ff=unix
命令

使用
保存文件:wq


它将以unix行结尾保存文件

使用unix文本编辑器vi的另一种可能的解决方案:

使用
vi filename.sh
命令在vi编辑中打开文件

键入vi
:set ff=unix
命令

使用
保存文件:wq


它将以unix行结尾保存文件

我在记事本++中遇到了同样的错误。在这篇文章中,我更改了编辑-->EOF转换,选择了Unix/OSX格式,解决了这个问题。

我在记事本++中遇到了同样的错误。在这篇文章中,我更改了编辑-->EOF转换,选择了Unix/OSX格式,解决了这个问题。

在ubuntu上的bash中(cmd行和脚本文件)对我来说都很好。您使用什么文本编辑器来编辑文件?您的脚本可能是RTF或其他非纯文本格式。我在windows中使用的是GVIM。我将尝试使用:set fileformat=unix强制使用unix编码保存文件。将报告tmr.yep,将文本文件更改为unix编码工作!在ubuntu上的bash中对我来说(cmd行和脚本文件)都很好。你用什么文本编辑器来编辑文件?您的脚本可能是RTF或其他非纯文本格式。我在windows中使用的是GVIM。我将尝试使用:set fileformat=unix强制使用unix编码保存文件。将报告tmr.yep,将文本文件更改为unix编码工作!