记录shell脚本“syntax error near unexpected token `fi‘”的问题

在Mac上运行Windows编辑的Shell脚本出现错误,原因是换行符不兼容。通过Vi编辑器设置fileformat为unix,转换脚本的换行方式,保存后问题得到解决。此方法适用于处理跨平台文本文件的换行差异。
摘要由CSDN通过智能技术生成

在Mac执行我写的shell 脚本,一直提示如下的错误

在这里插入图片描述

各种查找找语法结构,发现都没有错误,
通过 vi -b jisu_multichannel.sh 或者cat -v jisu_multichannel.sh
在这里插入图片描述
发现在Mac里面查看后自动在换行符后面带上了**^M**的标识,经过查阅资料知道 了在windows和Mac里面的换行符是不一样的导致的
所以我们需要通过改变shell 文本的代码模式

首先进入vi 模式,输入如下
在这里插入图片描述
这个实现发现会是dos 模式,所以出问题了
在这里插入图片描述
下面我们通过设置set ff=unix模式
在这里插入图片描述
然后保存即可
在这里插入图片描述
可以验证已经生效之后,再次运行就不会有这个问题,这里做个记录方便以后查找

shell脚本中的" syntax error near unexpected token `$'\r'' " 错误通常是由于不同操作系统下的换行格式不兼容所导致的。Windows和Linux系统使用不同的换行符格式,导致在Linux系统上运行时出现错误。解决这个问题的方法有两种: 1. 手动删除换行符:可以使用vim编辑器进入编辑模式,逐行删除每行末尾的^M符号。进入编辑模式后,按下"i"键进入编辑模式,手动删除每行末尾的^M符号,然后按下Shift + ":",输入"wq"保存并退出。 2. 使用vim替换命令:可以使用vim的替换命令来删除所有的^M符号。在vim编辑器中,使用命令"%s/^M//g",其中"^M"表示输入Ctrl + V,然后输入Ctrl + M来表示^M符号,"//"表示替换为空,"g"表示全局替换。这样可以删除文本中所有的^M符号。 以上是两种解决" syntax error near unexpected token `$'\r'' " 错误的方法,根据具体情况选择适合的方法进行处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【shell学习】解决报错:syntax error near unexpected token `$‘do\r‘](https://blog.csdn.net/qq_40481843/article/details/127814379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [a982338665#lf-file-build-tool#shell脚本执行错误1](https://download.csdn.net/download/weixin_35784370/86257042)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值