next up previous contents
Next: 追蹤與除錯 Up: Shell Scripts Previous: set 命令   Contents

set 基本用法

  1. 執行腳本 set1.sh 時,遇到不存在的變數 abc,bash 預設忽略它,繼續往下執行。
    [dywang@dywmac zzz]$ vim set1.sh
    [dywang@dywmac zzz]$ cat set1.sh
    #!/bin/bash
    echo $abc
    echo $USER
    [dywang@dywmac zzz]$ chmod +x set1.sh
    [dywang@dywmac zzz]$ ./set1.sh 
    
    dywang
    
  2. 在腳本 set2.sh 加上 set -u,遇到不存在的變數 abc,腳本會報錯並停止執行。
    [dywang@dywmac zzz]$ vim set2.sh
    [dywang@dywmac zzz]$ cat set2.sh
    #!/bin/bash
    set -u
    echo $abc
    echo $USER
    [dywang@dywmac zzz]$ ./set2.sh 
    ./set2.sh: line 3: abc: unbound variable
    
  3. 執行腳本時只螢幕輸出執行結果,無法得知是那行命令執行的?set3.sh 加上 set -x,就可以先印命令再輸出結果,以利追蹤及除錯腳本,命令行開頭都以加號 "+" 開頭。
    [dywang@dywmac zzz]$ vim set3.sh
    [dywang@dywmac zzz]$ cat set3.sh 
    #!/bin/bash
    set -x
    echo $abc
    echo $USER
    [dywang@dywmac zzz]$ ./set3.sh 
    + echo
    
    + echo dywang
    dywang
    
  4. 腳本 sh03.sh 加入 set -techo "set -t test"
    [dywang@dywmac zzz]$ cat sh03.sh
    #!/bin/bash
    read -p "請輸入一串數字: " -t 5 num
    
    num=${num:-"1 2 3 4 5 6 7 8 9"}
    num=$(echo "$num" | sed 's/ /+/g')
    total=$(echo "$num" | bc)
    echo $num=$total
    set -t
    echo "set -t test"
    exit 0
    
  5. 執行到 set -t 後退出腳本,所以 echo "set -t test" 沒輸出。
    [dywang@dywmac zzz]$ sh sh03.sh 
    請輸入一串數字: 1+2+3+4+5+6+7+8+9=45
    



De-Yu Wang 2019-08-12