• 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

  • 相关阅读:
    求一个字符串中连续出现次数最多的子串
    LintCode: Longest Common Substring
    LintCode: O(1) Check Power of 2
    LintCode: Fizz Buzz
    LintCode: 3 Sum
    LintCode: Two Sum
    LintCode: Sort Colors
    LintCode: Median of two Sorted Arrays
    LintCode: Search A 2d Matrix
    Lintcode: Sqrt(X)
  • 原文地址:https://www.cnblogs.com/LiuYanYGZ/p/14757418.html
Copyright © 2020-2023  润新知