• shell 中的括号——() [] {} 使用


    $()

    用作命令替换,同``,如var=`ls` 和var=$(ls)的结果一样

    可以使用echo $var | xargs –n 1查看

    ${}

    用作变量替换,与$类似,但是可以做形如var=${A}B这种工作,即在变量A后面增加一个B,可以认为是加强版的$A

    $(())

    用于计算,同样可用于计算的还有let, expr

    res=$((5+2))

    let res=5+2

    res=`expr 5 + 2`


    [[]]与[]

    1、  前者“[[”是关键字,后者是内建命令,相当于test ;

    2、  逻辑判断用法不一致

    [ : -a –o

    [[ : && ||

    3、  对于[]来说,要用-eq 等进行数字比较,而不能传入字符串和数字进行比较,而在[[]]中会把字符串直接转为0;当比较的变量为空时,使用[]就会报错,而[[]]不存在这种问题


    4、  [[]]可以用于算术运算,而[]不行

    如:

    [[ 99+1 –eq 100 ]]  true

    [ 99+1 –eq 100 ]  报错, 但可以使用[ $((99+1)) –eq100 ]

    5、 命令行参数的区别

    1)        [ ... ]为shell命令,所以在其中的表达式应是它的命令行参数,所以串比较操作符">" 与"<"必须转义,否则就变成IO重定向了;

    如: [ 0 < 1] 与[[ 0 < 1]]

    2)        由于"[["是关键字,不会做命令行扩展,所以在[[中"<"与">"不需转义,但是相对的语法就稍严格些。例如在[ ... ]中可以用引号括起操作符,因为在做命令行扩展时会去掉这些引号,而在[[ ... ]]则不允许这样做;

             $[[ "-z" "" ]]   报错,而$[“-z” “”]  true

  • 相关阅读:
    SQL时间段获取
    HqlBuilder之二(使用AspNetPager分页控件)
    HqlBuilder
    遭遇:TargetException: 对象与目标类型不匹配。
    让全站的页面不能前进和后退
    我的VS2003没有鼠标悬停提示的解决方法
    用动态控件模拟复合控件
    从C# 到 Java 点滴
    转:RBAC的解释
    如果非要用CustomValidator+WebService+asp.net ajax进行验证
  • 原文地址:https://www.cnblogs.com/OpenLinux/p/5020693.html
Copyright © 2020-2023  润新知