12-错误-Linux环境运行Shell脚本出现$‘r‘ command not found

打印 上一主题 下一主题

主题 838|帖子 838|积分 2514

12-错误-Linux环境运行Shell脚本出现$‘r’ command not found

更多内容欢迎关注我(持续更新中,欢迎Star✨)
Github:CodeZeng1998/Java-Developer-Work-Note
技术公众号:CodeZeng1998(纯纯技术文)
生存公众号:好锅(Life is more than code)
CSDN: CodeZeng1998
其他平台:CodeZeng1998好锅

问题描述:Linux 环境运行 Windows 环境编写的 Shell 脚本,出现如下报错。

报错信息:
  1. [127.0.0.1@localhost bin]# sh xxx.sh start
  2. xxx.sh: line 4: $'\r': command not found
  3. xxx.sh: line 6: syntax error near unexpected token $'{\r''
  4. 'xxx.sh: line 6: usage(){
复制代码

错误原因:存在换行符 (\r) 的问题。这种情况通常发生在脚本在 Windows 系统上编辑或创建后移动到类 Unix 系统而没有正确转换行尾换行符的情况下。

解决方案
方案一:
  1. sed -i 's/\r$//' xxx.sh
复制代码
这个命令使用 sed 工具来从一个文件中移除 Windows 操纵系统中的行尾回车符(Carriage Return,\r),通常在类Unix系统中使用。


  • sed: 是一个流编辑器,用于处理和转换文本。
  • -i: 是 sed 命令的选项,表示直接在文件中举行编辑(in-place)。
  • 's/\r$//': 是 sed 的替换命令,用来查找每行结尾的 \r(回车符)并将其替换为空字符串(即删除)。
  • xxx.sh: 是要编辑的文件名,这里假设是一个 Shell 脚本文件。
这条命令的作用是在 xxx.sh 文件中去除每行结尾的 Windows 格式的回车符,使得文件在类Unix系统中可以大概正常表现和运行。

方案二:
  1. dos2unix xxx.sh
复制代码
**这个命令 dos2unix xxx.sh
用于将一个文本文件从 DOS 或 Windows 格式转换为 Unix 格式。**在 Unix 系统中,换行符只使用换行(Line Feed,\n),而在 DOS 和 Windows 系统中,换行符使用回车和换行(Carriage Return + Line Feed,\r\n)的组合。


  • dos2unix: 是一个命令行工具,专门用来将 DOS 或 Windows 格式的文本文件转换为 Unix 格式。
  • xxx.sh: 是要转换的文件名,这里假设是一个 Shell 脚本文件。
执行这个命令后,dos2unix 会读取 xxx.sh 文件,并将其中的每个 \r\n 组合(DOS/Windows 格式的换行符)转换为 Unix 格式的 \n 换行符,如许文件就可以在 Unix 系统上正确表现和处理。

执行乐成会有如下输出:
  1. [127.0.0.1@localhost bin]# dos2unix xxx.sh
  2. dos2unix: converting file xxx.sh to Unix format ...
复制代码

注意:如果执行 dos2unix xxx.sh
出现如下报错,则表明当前环境没有安装 dos2unix
  1. [127.0.0.1@localhost bin]# dos2unix xxx.sh
  2. -bash: dos2unix: command not found
复制代码

dos2unix 安装步骤:出现如下日志则表明安装乐成了,可安装上述步骤对脚本举行格式化。
  1. [127.0.0.1@localhost bin]# yum install -y dos2unix
  2. Loaded plugins: fastestmirror
  3. Determining fastest mirrors
  4. Could not get metalink https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=x86_64 error was
  5. 14: curl#7 - "Failed to connect to 2406:da1a:fcb:2f01:f381:af1a:f922:c519: Network is unreachable"
  6. * base: mirrors.ustc.edu.cn
  7. * epel: mirrors.tuna.tsinghua.edu.cn
  8. * extras: mirrors.ustc.edu.cn
  9. * updates: mirrors.ustc.edu.cn
  10. base                                                                                                                                         | 3.6 kB  00:00:00     
  11. extras                                                                                                                                       | 2.9 kB  00:00:00     
  12. updates                                                                                                                                      | 2.9 kB  00:00:00     
  13. (1/2): extras/7/x86_64/primary_db                                                                                                            | 253 kB  00:00:00     
  14. (2/2): updates/7/x86_64/primary_db                                                                                                           |  27 MB  00:00:03     
  15. Resolving Dependencies
  16. --> Running transaction check
  17. ---> Package dos2unix.x86_64 0:6.0.3-7.el7 will be installed
  18. --> Finished Dependency Resolution
  19. Dependencies Resolved
  20. ====================================================================================================================================================================
  21. Package                                 Arch                                  Version                                    Repository                           Size
  22. ====================================================================================================================================================================
  23. Installing:
  24. dos2unix                                x86_64                                6.0.3-7.el7                                base                                 74 k
  25. Transaction Summary
  26. ====================================================================================================================================================================
  27. Install  1 Package
  28. Total download size: 74 k
  29. Installed size: 190 k
  30. Downloading packages:
  31. dos2unix-6.0.3-7.el7.x86_64.rpm                                                                                                              |  74 kB  00:00:01     
  32. Running transaction check
  33. Running transaction test
  34. Transaction test succeeded
  35. Running transaction
  36.   Installing : dos2unix-6.0.3-7.el7.x86_64                                                                                                                      1/1
  37.   Verifying  : dos2unix-6.0.3-7.el7.x86_64                                                                                                                      1/1
  38. Installed:
  39.   dos2unix.x86_64 0:6.0.3-7.el7                                                                                                                                    
  40. Complete!
复制代码


上图是由 Pic 生成的
关键词:A peaceful beach at sunset with gentle waves and a colorful sky

更多内容欢迎关注我(持续更新中,欢迎Star✨)
Github:CodeZeng1998/Java-Developer-Work-Note
技术公众号:CodeZeng1998(纯纯技术文)
生存公众号:好锅(Life is more than code)
CSDN: CodeZeng1998
其他平台:CodeZeng1998好锅

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表