syntax error near unexpected token `do

这种情况发生的原因是因为你所处理的文件换行符是dos格式的"\r\n"
可以使用
cat -v 文件名

来查看换行符是否是。如果是上述的,则行结尾会是^m,需要转换成linux/unix格式的"\n"。

#!/bin/sh^M ^M #frist^M #test script ^M #auther data^M ^M for file in *^M do^M
if grep -q POSIX $file^M
then^M
echo $file^M
fi^M done^M ^M

具体转换办法就是转换换行符 可以用sed命令处理一下文件,命令如下:

sed 's/\r//' 原文件 > 转换后文件
这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。

你可能感兴趣的:(Linux操作系统)