文档章节

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

SummerGao
 SummerGao
发布于 05/10 16:33
字数 404
阅读 0
收藏 0

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

  1. #!/bin/bash

  2. if [ "X$force" = "X1" ]; then

  3. echo 1

  4. elif [ "X$force" = "X2" ]; then

  5. echo 2

  6. elif [ "X$force" = "X3" ]; then

  7. echo 3

  8. else

  9. echo 4

  10. 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++帮我们转换,都可以。

本文转载自:http://blog.sina.com.cn/s/blog_695ef52801018f09.html

SummerGao
粉丝 4
博文 201
码字总数 74336
作品 0
济南
高级程序员
私信 提问
【Shell】shell脚本中的空格

1.定义变量时, =号的两边不可以留空格. 2.条件测试语句 [ 符号的两边都要留空格. 3.条件测试的内容,如果是字符串比较的话, 比较符号两边要留空格! 4.如果if 和 then写在同一行, 那么,注意, t...

CS青雀
2018/10/12
0
0
shell执行出错,啥原因啊

报错信息 [root@localhost tmp]# sh toKV.sh : command not found : command not found : command not found : command not found : command not found 'oKV.sh: line 14: syntax error near......

jize
2015/04/23
239
3
linux sed awk

在ubuntu下编写sed /awk脚本 新建文件 test.awk #!/usr/bin/awk -f NF!=MAX {print("The line "NR" does not have "MAX" filds")} 新建文件 input 1 a b c d f 1 a b c d f 1 a b c d f 1 ......

一耳听世界
2014/09/25
170
2
2018年7月27日shell

一、shell脚本介绍 shell是一种脚本语言,是用户与Linux操作系统之间沟通的桥梁。常用的shell是bash,shell的分类有sh、csh、ksh等等。 shell可以使用逻辑判断、循环等语法,可以自定义函数,...

人在艹木中
2018/07/27
0
0
Linux学习之路-Linux- If 及 case【9】---20171219

if 语句-条件选择 if 是一个shell的关键字 >if 选择执行>if 可以嵌套使用 用法 示例 练习题 case 语句-条件判断 用法 case支持glob风格的通配符:

DannyExia00
2018/01/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
10
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
1K
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部