今天编写了一个shell脚本,在Window系统远程传输到Linux系统后,执行提示:
test.sh: line 2: $'\r': command not found
test.sh: line 6: $'\r': command not found
")syntax error: invalid arithmetic operator (error token is "
原因是,Window文本的模式类型为dos,而Linux系统 文本的模式类型为unix,其实两者之间差别就在于换行符,如果在Linux下执行文本模式类型为dos的脚本,则一般会出现 $'\r': command not found 的错误。可以通过以下的命令来验证文本模式类型:
1、打开文件:vi <文件名>
2、查看现在文本的编码:
(1)、 :set ff
(2)、回车
解决办法如下:
1、通过 vi / vim 解决
(1)vi <脚本文件>
(2):set ff=unix
2、通过sed解决
# dos ==> unix
# test.sh 为脚本文件名称
sed -i 's/\r//' test.sh
注:第二种方式,在写自动化程序的时候,使用比较便捷,主要看自己的业务使用情况决定,按道理,window上写好脚本,应该也可以直接定义文本的模式类型为 unix 这个可以自己摸索一下