命令行中的同一bash脚本不会';从文件运行时无法工作
我正试图从cygwin学习Bash脚本。当我在命令提示符下手动键入以下几行时,一切正常,我看到屏幕上打印了从1到10的数字命令行中的同一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}
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编码工作!