在windows中编写的脚本,在linux上运行时报错linux $'\r': command not found
1.问题描述:
在windows中编写的脚本,在linux上运行时报错
powershell
linux $'\r': command not found
2.原因:
因为脚本在Windows系统编写时,换行是\r\n。
而在Linux系统中换行是\n。
所以在Linux中运行脚本时,系统会认为\r是一个真实的字符(不是换行符),导致运行错误。
3.查看是否有\r的方法
powershell
vim -b test.yml
# -b:(binary mode) 二进制模式
打开后就能看到每行后面都会有一个^M,这个就是不能识别的那个字符\r

4.解决办法:
4.1方法一:直接对脚本文件执行
powershell
sed -i 's/\r//' test.sh
4.2方法二:使用vi,替换\r
powershell
vim -b test.yml
shift + :
输入 %s/\r//g
4.3方法三:使用vi,进行格式转化
powershell
vim test.yml
shift + :
输入 set ff=unix