任何想法的问题可能是什么?
我的代码是:
#!/bin/bash
while :
do
echo "Press [CTRL+C] to stop.."
sleep 1
done
将其保存为.sh 并运行 bash file.sh
CentOS 6 32 位
第一次使用 BASH,需要它的东西一个简单的无限循环。
cat-v file.sh
.
您的文件中很可能有回车符或无空格。cat -v
将分别显示为^M
和M-BM-
或M-
。它将类似地显示您可能已经进入文件的任何其他奇怪字符。
删除 Windows 换行符
tr -d '\r' < file.sh > fixedfile.sh
我在 Cygwin 上得到同样的错误;我做了以下(其中一个固定它):
ConvertedTABS
toSPACES
randos2unix
on the.(ba)sh
file
你得到的错误是什么?
$ bash file.sh
test.sh: line 8: syntax error: unexpected end of file
如果您收到该错误,则可能有错误的行尾。Unix 在文件末尾使用<LF>
,而 Windows 使用<CR><LF>
。该<CR>
字符被解释为字符。
您可以使用od -a test.sh
查看文件中的不可见字符。
$ od -a test.sh
0000000 # ! / b i n / b a s h cr nl # sp cr
0000020 nl w h i l e sp : cr nl d o cr nl sp sp
0000040 sp sp e c h o sp " P r e s s sp [ C
0000060 T R L + C ] sp t o sp s t o p " cr
0000100 nl sp sp sp sp s l e e p sp 1 cr nl d o
0000120 n e cr nl
0000124
sp
代表空格,ht
代表 tab,cr
代表<CR>
,nl
代表<LF>
。请注意,所有行都以cr
结尾,后跟nl
字符。
如果cat
命令采用-v
参数,也可以使用cat -v test.sh
。
如果你的盒子上有dos2unix
,你可以使用该命令来修复你的文件:
$ dos2unix test.sh
可能会帮助别人:我遇到了同样的问题,而我做了一些“复制粘贴”从一个侧面的 Microsoft Word 文档,在那里我做笔记,我的 shell 脚本(S)。
重新编写,手动,脚本中完全相同的代码刚刚解决了这个问题。
起初这是相当不可理解的,我认为 Word 的隐藏字符和 / 或格式是问题。显而易见,但不可见...我为此损失了大约一个小时(我不是 shell 专家,你可能会猜到...)
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(17条)