zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    SGU 205. Quantization Problem
    BZOJ1009: [HNOI2008]GT考试
    SGU 204. Little Jumper
    Spring Aspect 获取请求参数
    springboot 是用拦截器Interceptor获取请求的控制器和请求的方法名
    spring boot Filter过滤器的简单使用
    Java 使用Query动态拼接SQl
    java 传入list集合 返回树形菜单,for循环遍历
    spring data jpa 的简单使用
    vue项目引入element
  • 原文地址:https://www.cnblogs.com/OpenLinux/p/5020693.html
Copyright © 2011-2022 走看看