linux执行sh脚本报错:$’\r’: 未找到命令的完美解决方法

这里是“linux执行sh脚本报错:$’\r’: 未找到命令的完美解决方法”的完整攻略。

问题描述

当我们在 Linux 系统执行一个 sh 脚本时,可能会遇到如下错误:

bash: ./test.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录

或者出现如下错误:

-bash: ./test.sh: /bin/bash: ^M: bad interpreter: No such file or directory

这是因为在 Windows 系统中编辑的文件,其行结尾符是"\r\n",而在 Linux 系统中行结尾符是"\n",因此在 Linux 系统执行这个脚本时会出现 $'\r': 未找到命令 的错误。

解决方法

方法一:使用 vi 编辑器进行修改

使用vi编辑器,将脚本文件的行尾符从“\r\n”改为“\n”。

vi test.sh

进入vi后按下“ESC”键,输入如下命令:

:set fileformat=unix

保存并退出:

:wq

方法二:使用dos2unix命令转换文件格式

dos2unix是一个转换文本文件格式的命令,可以将 Windows 格式的文本文件转换为 Unix 格式的文本文件格式。

安装命令:

sudo apt-get install dos2unix

使用命令进行转换:

dos2unix test.sh

示例说明

假设有一个 sh 脚本文件 test.sh,在 Windows 系统中编辑的,执行此脚本时出现了:$'\r': 未找到命令 的错误。

示例一:使用 vi 编辑器进行修改

  1. 使用命令将 test.sh 文件复制到 Linux 系统中:
scp test.sh user@remote:/path/to/dir
  1. 进入 Linux 系统,使用 vi 编辑器修改 test.sh 文件:
vi test.sh
  1. 输入如下命令,用于将脚本文件的行尾符从“\r\n”改为“\n”:
:set fileformat=unix
  1. 保存并退出 vi 编辑器:
:wq
  1. 执行修改后的 test.sh 文件即可。

示例二:使用dos2unix命令转换文件格式

  1. 使用命令将 test.sh 文件复制到 Linux 系统中:
scp test.sh user@remote:/path/to/dir
  1. 进入 Linux 系统,安装 dos2unix 命令:
sudo apt-get install dos2unix
  1. 使用 dos2unix 命令转换 test.sh 文件的格式:
dos2unix test.sh
  1. 执行转换后的 test.sh 文件即可。

总结

使用 vi 或 dos2unix 命令进行转换,可以避免执行 sh 脚本时出现 $'\r': 未找到命令 的错误。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux执行sh脚本报错:$’\r’: 未找到命令的完美解决方法 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • linux系统中的删除操作

    #rm [-fir] 文件或者目录 参数: -f:就是force的意思,忽略不存在的文件,不会出现警告信息; -i:互动模式,在删除前会询问用户是否操作; -r:递归删除。最常用的在目录删除。这是一个非常危险的参数!!!   范例一:删除bashrc #rm -i bashrc rm: remove regular file `bashrc’? y #如果加…

    Linux 2023年4月11日
    00
  • 上海开放大学-Samba共享服务器基本配置

    扫码获取搭建步骤: 实验名称: Samba共享服务器基本配置 简答题(直接打字回答在题目下方,仅完成4道题目的同学,最高30分。另外70分是加给自己搭建实验环境完成实验报告的同学): 1、Samba是什么,有什么用处? 2、CentOS系统中,在线安装Samba服务,用什么命令? 3、CentOS系统中,如何创建一个共享目录?以自己学号作为文件夹名称,举例说…

    Linux 2023年4月17日
    00
  • linux内存管理机制(自己整理)

    1、以程序开发者的角度审视Linux的进程内存管理 2、系统物理内存管理和内核内存的使用方法 3、内存映射、理解内核内存管理与用户内存管理之间的关系 进程与内存 进程如何使用内存? 毫无疑问,所有进程(执行的程序)都必须占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途不一而不尽相同…

    Linux 2023年4月11日
    00
  • Linux多线程及多线程并发访问同一块内存的问题怎么解决

    这篇文章主要介绍了Linux多线程及多线程并发访问同一块内存的问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux多线程及多线程并发访问同一块内存的问题怎么解决文章都会有所收获,下面我们一起来看看吧。 为什么需要多线程? 并行实体共享同一个地址空间和所有可用数据 的这种能力是多进程锁无法表达的,因为多进程具有不同…

    2023年4月8日
    00
  • CentOS7安装MySQL8的超级详细教程(无坑!)

    下面是“CentOS7安装MySQL8的超级详细教程(无坑!)”的完整攻略,包含两条示例说明。 安装MySQL8前的准备工作 安装必要的依赖包和软件 sudo yum -y install wgetsudo yum -y install bzip2sudo yum -y install makesudo yum -y install cmakesudo yu…

    Linux 2023年5月14日
    00
  • Linux lpadmin命令

    下面我详细讲解一下Linux lpadmin命令的作用与使用方法。 1. lpadmin命令的作用是什么? lpadmin命令是Linux系统中用于管理打印机的命令,它可以用于添加、删除和修改打印机的设置。同时它也可以设置打印机的队列、共享打印机、打印机驱动以及默认打印机等功能。 2. lpadmin命令的使用方法 lpadmin命令的基本语法如下: lpa…

    Linux 2023年3月28日
    00
  • CentOS 7安装完成后初始化的方法

    下面是详细讲解“CentOS7安装完成后初始化的方法”的完整攻略,过程中包含两条示例说明: CentOS7安装完成后初始化的方法 在完成CentOS7的安装后,我们需要进行一些初始化的操作,以确保系统的正常运行以及安全性。以下是 CentOS7安装完成后的初始化流程: 1. 更新系统 首先,我们需要更新系统,以获取最新的安全补丁和更新。在命令行中运行以下命令…

    Linux 2023年5月14日
    00
  • VMware Workstation安装Linux(Ubuntu)系统

    下面是VMware Workstation安装Linux(Ubuntu)系统的完整攻略: 1.准备工作 1.1 下载VMware Workstation 在VMware官网下载最新版的VMware Workstation,并安装到电脑上。 1.2 下载Linux镜像文件 在官方网站下载Ubuntu的ISO镜像文件,例如 Ubuntu 20.04 LTS De…

    Linux 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部