如何解决shell脚本错误$’r’ command not found
问题背景
在编写或运行Shell脚本时,有时会出现错误提示“$’r’ command not found”。这个错误消息通常出现在脚本文件在不同操作系统之间进行转移或复制时。产生这个错误的原因是因为脚本包含了某个操作系统特有的字符或格式,而当前的操作系统无法识别或解析这些字符导致的。
解决方法一:使用文本编辑器转换行尾格式
一个常见的解决方法是使用文本编辑器将脚本的行尾格式转换成当前操作系统所支持的格式。这样可以确保脚本在不同操作系统之间的兼容性。
- 打开脚本文件:
- 进入Vim的编辑模式,通过下面的命令查看当前文件的行尾格式:
- 根据输出结果,确定当前文件的行尾格式,一般有三种情况:
- unix - 行尾格式是LF(\n)
- dos - 行尾格式是CRLF(\r\n)
- mac - 行尾格式是CR(\r)
- 使用下面的命令将文件的行尾格式转换为unix格式:
- 保存并退出文件:
vi script.sh
:set ff?
:set ff=unix
:wq
解决方法二:使用dos2unix命令转换行尾格式
另一种解决方法是使用dos2unix命令将脚本文件的行尾格式转换为unix格式。dos2unix是一个常用的工具,可以在终端中直接使用。
- 使用下面的命令安装dos2unix:
- 将脚本文件的行尾格式转换为unix格式:
- 重新运行脚本文件:
sudo apt-get install dos2unix
dos2unix script.sh
./script.sh
解决方法三:使用sed命令删除无效字符
如果前两种方法无效,你可以尝试使用sed命令来删除无效字符。sed是一个流编辑器,可以用来处理文本文件。
- 使用下面的命令将脚本文件复制一份备份:
- 使用sed命令删除无效字符:
- 重新运行脚本文件:
cp script.sh script.sh.bak
sed -i 's/\r//' script.sh
./script.sh
猜您想看
-
基于redis-cluster搭建redis高可用集群的方法
一、什么是Re...
2023年05月26日 -
在CS:GO中,画面下方的信息栏如何去掉?
如何在CS:G...
2023年04月17日 -
如何在宝塔面板中安装Apache?
在宝塔面板中安...
2023年04月16日 -
Pytorch中使用tensorboard中如何添加文本字符串add_text
1.什么是Py...
2023年05月26日 -
Python如何爬取抖音APP热点榜数据
如何抓取抖音A...
2023年07月20日 -
如何使用iPhone上的杜比音效输出优化音效
如何使用iPh...
2023年05月05日