sh脚本换行问题
脚本是Windows 换行格式(CRLF \r\n),Linux 识别到多余的 \r(^M)字符,引发两类报错
#遇到这样报错
-bash: /root/xxx.sh: 无法执行:找不到需要的文件
##遇到这样报错
root@root:# bash /root/xxx.sh
/root/xxx.sh: 行 8: $'\r': 未找到命令
: 无效的选项名 xxx.sh: 第 9 行:set: pipefail
Windows 记事本 / VSCode 默认换行保存后上传 Linux 极易出现该问题。
一键修复
sed -i 's/\r$//' /root/xxx.sh
验证换行是否修复成功
cat -v /root/xxx.sh | head -10
✅正常:看不到 ^M
❌异常:每行末尾出现 ^M