# 或者
Code:
sed -i 's/\r$//' smart_health_final.sh
-----------
bash 运行时的错误
xxx.sh: line 2: $'\r': command not found
和
warning: here-document at line 20 delimited by end-of-file (wanted 'EOF')
都清楚地表明了问题所在:脚本文件的换行符是 Windows 风格的
CRLF (Carriage Return + Line Feed, \r\n)
,而不是 Linux/Unix 风格的 LF (Line Feed, \n)。
Linux 的 Bash 解析器无法正确处理 Windows 风格的 CRLF 换行符,它会把每一行末尾的 \r (回车符) 当作一个无效的命令尝试执行,导致 command not found 错误,并且破坏了多行字符串 (here-document) 的解析。
解决方案:
将脚本文件的换行符从 CRLF 转换为 LF。先尝试使用 dos2unix 命令进行转换,这是处理此类问题的标准工具。转换后应该就能正常执行脚本了。