next up previous contents
Next: iSCSI Storage Up: 範例 Previous: 範例一   Contents

範例二

  1. 寫一腳本 /root/program 提供以下功能:
    1. 執行 /root/program kernel 回應 user 到 stdout。
    2. 執行 /root/program user 回應 kernel 到 stdout。
    3. 執行 /root/program 不加任何參數或參數不是 user 或 kernel 時,輸出以下結果到 stderr:
      /root/program kernel|user
  2. 編輯 /root/program
    [root@kvm5 ~]# vim /root/program
    
  3. 第一種寫法
    [root@kvm5 ~]# cat /root/program
    #!/bin/bash
    
    [ "$1" == "kernel" ] && echo user && exit
    [ "$1" == "user" ] && echo kernel && exit
    echo "/root/program kernel|user" >&2
    exit 0
    
  4. 第二種寫法
    #!/bin/bash
    
    if [ "$1" == "kernel" ]; then
             echo user 
    elif [ "$1" == "user" ]; then 
            echo kernel 
    else
            echo "/root/program kernel|user" >&2
    fi
    exit 0
    
  5. 第三種寫法
    #!/bin/bash
    
    case "$1" in
        "kernel")
            echo user
            ;; 
        "user") 
            echo kernel
            ;;
        *)
            echo "/root/program kernel|user" >&2
            ;;
    esac
    exit 0
    
  6. 變更腳本屬性為所有人都可執行。
    [root@kvm5 ~]# chmod a+x /root/program
    
  7. 執行腳本 /root/program,參數 kernel,回應 user 如要求。
    [root@kvm5 ~]# /root/program kernel
    user
    
  8. 執行腳本 /root/program,參數 user,回應 kernel 如要求。
    [root@kvm5 ~]# /root/program user
    kernel
    
  9. 執行腳本 /root/program 不提供參數,顯示訊息如要求,而且將 stderr 導向到 /dev/null 後,螢幕上沒有任何回應,證明回應的訊息確實是送到 stderr,而不是 stdout。
    [root@kvm5 ~]# /root/program 
    /root/program kernel|user
    [root@kvm5 ~]# /root/program 2>/dev/null
    
  10. 執行腳本 /root/program 提供參數 abcd,顯示訊息如要求,而且將 stderr 導向到 /dev/null 後,螢幕上沒有任何回應,證明回應的訊息確實是送到 stderr,而不是 stdout。
    [root@kvm5 ~]# /root/program abcd
    /root/program kernel|user
    [root@kvm5 ~]# /root/program abcd 2>/dev/null
    [root@kvm5 ~]#
    


De-Yu Wang 2018-07-11