shell if判断语句 报错:syntax error near unexpected token `elif'

在xshell下,用notepad++写了个简单的shell脚本,内容如下:

 

复制代码
 1 #!/bin/bash
 2 
 3 if [ "X$force" = "X1" ]; then
 4 
 5 echo 1
 6 
 7 elif [ "X$force" = "X2" ]; then
 8 
 9 echo 2
10 
11 elif [ "X$force" = "X3" ]; then
12 
13 echo 3
14 
15 else
16 
17 echo 4
18 
19 fi
复制代码

 

运行报错:syntax error near unexpected token `elif'

【解决过程】

1.去notepad++中,视图->显示符号->显示所有符号,然后就看到了预料到的,所有的回车换行都是windows的CR LF:

所有的换行都是windows的CRLF

得知是Linux和windows下的回车换行符不兼容的问题。

所以,剩下的就是去将windows下面的CR LF,转换为Linux下面的LF,即可。

此处,不需要再麻烦地去用其他dos2unix等工具了,notepad++就可以帮忙搞定:

编辑->档案格式转换->转换为UNIX格式:

cpp 转换为Unix格式

即可将所有的 CR LF,转换为LF:

所有的都是linux的LF了

所以,越加发现notepad++的强大之处了。

然后再运行此shell脚本,即可正常运行了。

【总结】

linux/cygwin下面的shell脚本出现错误:

syntax error near unexpected token `elif'

是由于该脚本文件是在windows环境下创建编辑的,其默认是将所有的回车变成:

CR加上 LF,而Linux/Unix中的回车只是LF,所以导致解释器不认,出现此错误。

解决办法就是,将所有的CRLF转换为LF即可。

转换的方法有多种,比如用dos2unix,或用此处的notepad++帮我们转换,都可以。

 

转载于:https://my.oschina.net/zhenggao/blog/3048076

posted @   LiuYanYGZ  阅读(1785)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2016-05-11 Linux makefile 教程 非常详细,且易懂
2016-05-11 初始用户组,有效用户组,初始用户,有效用户
点击右上角即可分享
微信分享提示