• 你好!欢迎你的到来
  • 关于我们
  • 首页 博客 学习笔记 技术导航 工具
  • 博文分类
    • PHP(43)
    • MySQL(11)
    • Linux(28)
    • html(3)
    • JQuery(4)
    • JavaScript(9)
    • svn(2)
    • CSS(2)
    • seajs(1)
    • go(44)
    • redis(1)
    • nginx(8)
    • mongo(0)
    • es(0)
    • 算法(0)
    • 其他(26)
    • 生活(1)
    专栏
    • Jquery基础教程
      • 文章:(15)篇
      • 阅读:17794
    • shell命令
      • 文章:(42)篇
      • 阅读:61197
    • Git教程
      • 文章:(36)篇
      • 阅读:119127
    • leetCode刷题
      • 文章:(37)篇
      • 阅读:15712
    • 摘要视图
    • 目录视图
    [[:syntax error in expression (error token is "**")报错解决方案
    2018-07-14 16:56 阅读(9023) 评论(1)

    今天写了个简单的shell,报错如下:

    ./t1.sh: line 15: [[: hello shell: syntax error in expression (error token is "shell")

    搜索一下,原来是对if中的比较不够了解,于是掉坑了。

    if中的比较,主要有shell风格的和c风格的。

    一、shell风格

    shell风格的比较,格式一般如下:

    #判断n1和n2是否相等
    if [ $n1 -eq $n2 ];then  
       echo "eq"  
    fi
    #当然也可以使用下面的格式
    if [[ $n1 -eq $n2 ]];then  
       echo "eq"  
    fi

    备注:‍[[]]运算符是[]运算符的扩展。

    1、数值比较

    在shell风格中的数值比较,我们可以使用eq、neq、le之类的比较字符,关于这些字符的含义,可以点击“比较字符”

    当然,我们也可以使用 "="、">"、“<"符号,但是使用这些符合时候,我们需要使用[[]]运算符

    符号解释
    -eq 等于,如:if [ "$a" -eq "$b" ]
    -ne不等于,如:if [ "$a" -ne "$b" ]
    -gt大于,如:if [ "$a" -gt "$b" ]
    -ge大于等于,如:if [ "$a" -ge "$b" ]
    -lt小于,如:if [ "$a" -lt "$b" ]
    -le小于等于,如:if [ "$a" -le "$b" ]
    =等于, 如:if [ "$a" = "$b" ]
    ==等于, 如:if [[ "$a" == "$b" ]]
    !=不等于,如:if [ "$a" != "$b" ], 这个操作符将在[[]]结构中使用模式匹配
    <小于,如if [[ "$a" < "$b" ]] 或 if [ "$a" \< "$b" ],在[]结构中"<"需要被转义. 
    >if [[ "$a" > "$b" ]] 或 if [ "$a" \> "$b" ],在[]结构中">"需要被转义.

    2、字符串比较


    符号解释
    =等于, 如:if [ "$a" = "$b" ]
    ==等于, 如:if [[ "$a" == "$b" ]]
    !=不等于,如:if [ "$a" != "$b" ], 这个操作符将在[[]]结构中使用模式匹配
    <小于,如if [[ "$a" < "$b" ]] 或 if [ "$a" \< "$b" ],在[]结构中"<"需要被转义. 
    >if [[ "$a" > "$b" ]] 或 if [ "$a" \> "$b" ],在[]结构中">"需要被转义.
    -z
    判断字符是否为null ,即长度是否为空
    -n判断字符是否不为null

    备注:在[]或[[]]中,符号两边都必须有空格。


    二、c语言风格

    1、数值比较

    在c语言风格中的数值比较,我们可以使用>、=、< 之类的符号,如下:

    符号解释
    < 小于,如:if (( "$a" < "$b"))
    >大于,如:if (( "$a" > "$b"))
    <=小于或等于,如:if [ "$a" <= "$b" ]
    >=大于等于,如:if [ "$a" >= "$b" ]

    2、字符串比较

    符号解释
    < 小于,如:if (( "$a" < "$b"))
    >大于,如:if (( "$a" > "$b"))
    <=小于或等于,如:if [ "$a" <= "$b" ]
    >=大于等于,如:if [ "$a" >= "$b" ]


    本文为原创文章,请尊重辛勤劳动,如需转载,请保留本文地址
    http://www.findme.wang/blog/detail/id/497.html

    若您感觉本站文章不错,读后有收获,不妨赞助一下?

    我要赞助

    您还可以分享给朋友哦

    更多
    顶
    0
    踩
    0
    • 上一篇: go文件操作
    • 下一篇: nginx配置中location匹配规则详解
    • 查看评论
    • 正在加载中...
    • 留言
    • 亲,您还没有登录,登录后留言不需要审核哦!
      可以使用如下方式登录哦!
  • CSDN | 新浪微博 | github | 关于我们 | 我要留言 | 友链申请
  • 豫ICP备18038193号    Copyright ©lidequan All Rights Reserved