1. [ 居然是一个 Shell 命令, 位置在 /bin/[, 大概可以算冷知识了?

  2. [] 可以用于判断, 左右需要加空格. 可以有多个判断条件, 判断条件必须是 -o, -a.

    # this will echo true
    if [ "string" -o "" ]; then
        echo true
    else
        echo false
    fi
    
    # this will echo false
    if [ "string" -a "" ]; then
        echo true
    else
        echo false
    fi
    
  3. [[]] 也可用于判断, 左右需加空格, 可以有多个判断条件, 判断条件可以是 ||, &&.

    # this will echo true
    if [ "string" -o "" ]; then
        echo true
    else
        echo false
    fi
    
    # this will echo false
    if [ "string" -a "" ]; then
        echo true
    else
        echo false
    fi
    
  4. () 执行脚本命令, 新起窗口执行, 不影响当前脚本. 左右不必留空, 不必加分号 ;.

    var=0
    (var=1)
    echo $var # $var is still 0
    
  5. {} 执行脚本命令, 在当前窗口执行, 会影响当前脚本, 左右必须留空, 结尾必须加分号 ;.

    var=0
    { var=1; }
    echo $var # $var is 1 now
    
  6. 通常情况下, 无论 (), {}, (()), 前面加 $ 符号意味着要取得其返回值, 而不加 $ 符号意味着只是让其简单做一个运算, 如同执行了一个 C 语言中的 void 类型函数, 无返回值.

  7. (()) 可用于进行四则运算, 基本可以替换 let "expression"语法.

2018-08-20 23:5549