在windows中编写的脚本,在linux上运行时报错linux $‘\r‘: command not found

在windows中编写的脚本,在linux上运行时报错linux $'\r': command not found

1.问题描述:

在windows中编写的脚本,在linux上运行时报错

powershell 复制代码
linux $'\r': command not found

2.原因:

因为脚本在Windows系统编写时,换行是\r\n。

而在Linux系统中换行是\n。

所以在Linux中运行脚本时,系统会认为\r是一个真实的字符(不是换行符),导致运行错误。

3.查看是否有\r的方法

powershell 复制代码
vim -b test.yml

# -b:(binary mode) 二进制模式

打开后就能看到每行后面都会有一个^M,这个就是不能识别的那个字符\r

4.解决办法:

4.1方法一:直接对脚本文件执行
powershell 复制代码
sed -i 's/\r//' test.sh
4.2方法二:使用vi,替换\r
powershell 复制代码
vim -b test.yml
shift + :
输入  %s/\r//g
4.3方法三:使用vi,进行格式转化
powershell 复制代码
vim  test.yml
shift + :
输入  set ff=unix
相关推荐
筱顾大牛2 分钟前
黑马点评---用户签到、UV统计
android·服务器·uv
KillerNoBlood9 分钟前
OpenClaw笔记
linux·网络·笔记
吹牛不交税10 分钟前
vben admin框架vue项目发布部署到linux的docker中
linux·运维·docker
倔强的石头10611 分钟前
Oracle 迁移 TCO 深度拆解:从隐性运维成本陷阱到全栈工具链破局
运维·数据库·oracle·kingbase
kcuwu.12 分钟前
Python文件操作零基础及进阶
android·服务器·python
最懒的菜鸟20 分钟前
docker pull weaviate 国内拉取失败的问题
运维·docker·容器
凤年徐31 分钟前
Linux 基础指令与权限管理完全指南
linux·运维·chrome
gallonyin33 分钟前
服务器带宽异常排查实战:用 tcpdump + Docker 精准定位“吃带宽”的进程
服务器·docker·tcpdump
C++ 老炮儿的技术栈34 分钟前
现代 C++(C++11 及以后)的移动语义
linux·c语言·开发语言·c++·github
LJianK135 分钟前
《Java 数据分组的四种姿势:从 for 循环到 Stream API》
java·linux·服务器