• shell中括号总结: {}, (), (()), [], [[]]


    括号总结

    () 单小括号

    • 命令组,括号中的命令将会开一个新的子shell执行

      • 括号中变量不能被剩下脚本使用

      • 命令之间分号隔开

      • 命令和括号之间可以没有空格

    • 命令替换,等同于``反引号

      • $(xxx)会被替换成命令执行结果

    • 初始化数组

      • arr=(a b c d)

    filenum=$(ls | wc -l)
    echo ${filenum}
    filenum=`ls | wc -l`
    echo ${filenum}
    arr=(a b c d)
    echo ${arr[0]}  // a
    echo ${arr[@]}  //4
     

    (()) 双小括号

    • 整数计算,不支持浮点

      • ((tmp=a+b))

      • c=$((a+b))

    • 算术运算比较

    ((c=2+1))
    echo $c     //3
    d=$((1+2))
    echo $d     //3
    // a==1 true
    if (($a==1)); then
        echo "a==1"
    fi
    //a==1 true
    if ((a==1)); then
        echo "a==1"
    fi
     

    [] 单中括号

    • 判断命令: 一般参数为比较表达式

      • 会根据比较的结果返回一个退出状态码

      • 可用的比较运算符有:

        • 字符串: ==, !=

        • 整数: -eq, -gt, -lt, -ne, -ge, -le

        • 逻辑: -a(||), -o(&&)

    // aa == aa
    if [ "aa" == "aa" ]; then
        echo "aa == aa"
    else
        echo "aa != aa"
    fi
    // 1 < 2
    if [ 1 -lt 2 ]; then
        echo "1 < 2"
    fi
    //1 -lt 2 -o aa == bb
    if [ 1 -lt 2 -o "aa" == "bb" ]; then
        echo "1 -lt 2 -o aa == bb"
    fi
     

    [[]] 双中括号

    • bash程序语言中的关键字,双括号中的支付不会发生参数扩展或者命令替换

    • 支持字符串模式匹配和正则匹配

    • 支持逻辑判断符: &&, ||, <, >

    // hello 与 hell? 可以加括号,也可以不加
    if [[ hello == hell? ]]; then
        echo "hello == hell?"
    fi
    if [[ 2 -gt 1 && "hello" == "hell?" ]]; then
        echo "2 > 1 && hello == hell?"
    fi
     

    {} 花括号

    • 使用通配符对花括号内容进行扩展

      • 不允许有空白(除非空白被引用或者转义)

    • 代码块:

      • 不会开一个新的shell, 变量可以被余下脚本使用

      • 每句命令都要有分号

      • 括号两边有空格

    `touch {1..4}.txt`  // touch 1.txt 2.txt 3.txt 4.txt
    `touch {ex1, ex2}.txt`  // touch ex1.txt ex2.txt
  • 相关阅读:
    Octave/Matlab初步学习
    week_3
    week_2
    week_1
    清除input[type=number]的默认样式
    js,获取和设置cookie、 localStorage
    php表单提交时获取不到post数据的解决方法
    console.log 简写
    JS合并两个数组的方法
    javascript ES5、ES6的一些知识
  • 原文地址:https://www.cnblogs.com/alihenaixiao/p/6498725.html
Copyright © 2020-2023  润新知