Bash脚本中cd命令报错:含\r目录不存在如何解决?
解决Bash脚本中cd命令出现\r的报错问题
这个报错里的$'myDir\r'说明目录名后面多了个Windows风格的回车符\r——这是因为你大概率在Windows系统下编辑了脚本文件,Windows用\r\n作为换行标记,而Linux/Unix系统只认\n,Bash会把多余的\r当成目录名的一部分,自然找不到对应的文件夹。
下面是几种解决办法:
用dos2unix转换文件格式
直接用dos2unix工具把脚本转换成Unix风格换行:dos2unix your_script.sh如果系统没装这个工具,用包管理器安装即可,比如Debian/Ubuntu系:
sudo apt install dos2unixCentOS/RHEL系:
sudo yum install dos2unix用sed手动删除\r
没有dos2unix的话,用sed命令批量去掉每一行末尾的\r:sed -i 's/\r$//' your_script.sh编辑时直接用Unix换行格式
如果你用VS Code、Sublime等编辑器,在编辑器右下角找到换行格式标记(比如显示CRLF),点击切换成LF(Unix风格),之后编辑脚本就不会再产生\r了。
你可以用cat -A your_script.sh查看脚本内容,带\r的行末尾会显示^M,转换完成后这个标记就会消失,再运行脚本就正常了。
内容的提问来源于stack exchange,提问作者blair.smyth
相关产品推荐
相关产品推荐

