Ubuntu服务器Bash脚本报错`syntax error near unexpected token $'do\r'`求助
问题原因
你的脚本里包含了Windows风格的换行符(CRLF,即\r\n),而Linux系统使用LF(\n)作为换行符。bash会把\r当成命令的一部分执行,因此出现$'\r': command not found和语法错误。这种情况通常是因为你在Windows机器上编辑脚本后,上传到Ubuntu服务器导致的。
解决方法
- 安装并使用
dos2unix转换脚本格式:sudo apt update && sudo apt install dos2unix dos2unix cpu_bench.sh - 用
sed命令直接删除所有\r字符:sed -i 's/\r$//' cpu_bench.sh - 用Vim编辑器修改文件格式:
打开脚本文件:
在Vim命令模式下输入:vim cpu_bench.sh
保存退出::set fileformat=unix:wq
预防措施
- 尽量在Linux环境下编写脚本;
- 如果使用Windows编辑器(比如VS Code),将右下角的换行符设置从
CRLF改为LF后再保存脚本。
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

