原因及方法:
问题原因:
linux 和 windows 的回车换行符不同,脚本在 windows 下面编辑过,导致回车换行符 变成了 \r\n
,而 linux 中只有换行符 \n
, 没有回车符。
windows创建的文件是 \r\n
结束的, 而 linux是以 \n
结束的。
所以unix的文本到windows会出现回车符丢失; 而反过来就会出现 ^M 的符号了
解决方法:
sed -i -e 's/\r$//' my_script.sh
就是找到以 \r
结尾的字符串,并且字符串将 \r
替换为 空
完整释义:
sed is stream editor, but can edit files directly too, with the following:
sed -i -e 's/foo/bar/g' filename
s is used to replace the found expression “foo” with “bar”
g stands for “global”, meaning to do this for the whole line. If you leave off the g and “foo” appears twice on the same line, only the first “foo” is changed to “bar”.
-i option is used to edit in place on filename.
-e option indicates a command to run.