shell脚本报错换行符syntax error near unexpected token \r

有时候一些windows下处理不当的sh脚本文件放到linux下执行报错, 提示存在换行符

原因主要就是window下EOL行结束是 \r\n 两个字符, 而linux,unix下是 \n 单字符。


以下vim命令做确认

#显示回车符(\r), 具体的在vim环境中会显示为 ^M 符号
:e ++ff=unix %

#显示换行符(\n), 具体的再vim环境下回显示为 $ 符号。
#此命令同时会显示制表符, 在vim环境中显示为 ^I 符号
:set list

以上两条vim指令的查看效果也可通过一条shell指令实现

cat -A filename



删除回车符, 使shell脚本能正常运行

:%s/\r//g

也可通过shell指令将windows下格式文件转换为linux下格式文件

dos2UNIX filename


附:

将linux下格式文件转换为windows下格式文件

UNIX2dos filename


你可能感兴趣的:(shell,报错,vim,换行符,\r,回车符)