问题描述
在Windows系统中写的脚本,直接上传到服务器中不能直接运行,会出现以下错误:
- 使用 sh xxx.sh运行脚本
- 使用 ./ xxx.sh运行脚本
问题原因
出现这个问题是因为Windows系统和Linux系统的换行符命令不同
系统 | 描述 | 名称 | 转义符 |
---|---|---|---|
Windows | 回车换行 | CRLF | \n\r |
Linux | 换行 | LF | \n |
file ./xxx.sh
使用file 命令查看当前文件格式
发现使用的是CRLF行终止符,是Windows中的换行符
解决方案
编辑文件的方式修改
使用vim编辑需要修改的文件
:set fileformat=unix
或
:set ff=unix
直接修改文件格式
dos2unix ./xxx.sh
在Windows中修改
我使用的是VS Code进行编写的脚本,右下角有CRLF或LF选项,将此选项修改为LF即可(同理,其他编辑器也可进行设置)