美文网首页ShellLinux我用 Linux
shell中四种括号作用

shell中四种括号作用

作者: Lee_DH | 来源:发表于2017-10-22 16:41 被阅读52次

    单括号

    • 一次性执行多条命令,各命令之间用分号分隔,最后一个命令可以没有分号 例:(cd /home; touch demo;)
    • 将命令执行结果输出给一个变量 例:a=$(date) ,下面3个赋值语句效果均相同
    1. a=$(date)
    2. a=`date`
    3. a=$`date`
    
    • 初始化数组 例:arr=(a b c d)

    双括号

    • 所有变量可以不加"$"前缀,直接进行四则运算
    注: 1、2、3 等价
    a=3.14
    1. ((b=a+1))
    2. b=`expr $a + 1`
    3. let "b=a+1"
    4. b=$[$a+1]
    5. b=`echo "scale=2;$a+0.69"|bc` 
    6. b=`echo "$a 3.14"|awk '{printf("%g",$1*$2)}
    echo $b
    

    等式5中的bc可进行浮点型计算,使用scale进行精度设置
    等式6是利用awk进行计算,awk也支持浮点型计算,且内置有 log、sqr、cos、sin等函数

    • 可以像C语言一样,执行C语言规则运算,如a++、b--
    a=1
    ((a++))
    echo $a
    
    • 可进行逻辑运算
    a=1
    echo $((a>1?8:9))
    
    • 双括号结构扩展了for、while、if等条件测试运算
    for语法
    num=100
    total=0
    for((i=0;i<=num;i++))
    do
        ((total+=i))
    done
    echo $total
    
    while语法
    num=100
    total=0
    i=0
    while((i<=num))
    do
        ((total+=i,i++))
    done
    echo $total
    
    if语法
    a=3
    if((a>1)); then
      echo 'yes'
    fi
    

    单中括号

    • 通过 type [可知,[ 是内建命令([ is a shell builtin),它是调用 test 命令的标识,右中括号关闭条件判断
    • [ ]字符串比较是按照字典顺序,常用 ==、!=
    • [ ]整数比较采用 -eq、-gt、-lt的形式
    • [ ]是shell命令,所以中间的表达式是命令行参数,如在比较时使用> <时,需要用\转义,否则就变成重定向
    • [ ]的逻辑与用 -a,逻辑或用-o
    • 字符范围,用作正则表达式的一部分
    • 在一个array结构的上下文中,[]用来引用数组中的每个元素的编号
    • [ ]不会进行算数扩展,例
    if [ 99+1 -eq 100 ]; then
      echo 'yes'
    fi
    
     bash: [: 99+1: integer expression expected
    

    双中括号

    • type [[可知,[[是shell关键字
    • [[ ]]字符串比较是按照字典顺序,常用 ==、!=
    • [[ ]]整数比较采用 -eq、-gt、-lt的形式
    • 当比较表达式中其中一个比较数可能为空或者不存在时,使用[ ]会报错,使用[[ ]]可以避免报错的问题
    if [ a -eq 3 ]; then      --- [: a: integer expression expected
    if [[ a -eq 3 ]]; then
     echo 'yes'
    fi
    
    • [[ ]]的逻辑与用 &&,逻辑或用||
    • [[ ]]支持算数扩展,例
    if [[ 99+1 -eq 100 ]]; then
      echo 'yes'
    fi
    

    相关文章

      网友评论

        本文标题:shell中四种括号作用

        本文链接:https://www.haomeiwen.com/subject/uaebuxtx.html