next up previous contents
Next: 管線命令 (pipe) Up: 資料導向與管線處理 Previous: 資料流重導向   Contents

連續命令

  1. 指令間以分號( ; )隔開:連續執行指令。
    [root@linux ~]# sync; shutdown -h now
    
  2. 指令間以 && 隔開:前面指令執行結果正確,就接著執行後續的指令,否則就略過。
    [root@linux ~]# ls /tmp && touch /tmp/testingagin 
    ## 目錄/tmp存在,所以/tmp/testingagin會被建立。
    [root@linux ~]# ls /csie && touch /csie/test
    ## 目錄/csie不存在,所以touch /csie/test不會被執行。
    
  3. 指令間以 || 隔開:前一個指令有錯誤時,後面的指令才被執行。
    [root@linux ~]# ls /tmp/csieing || touch /tmp/csieing
    
  4. 例題:以 ls 測試 /tmp/csie 是否存在?若存在則顯示 "exist" ,若不存在,則顯示 "not exist"。
    ls /tmp/csie && echo "exist" || echo "not exist"   %*<== 正確*)
    ls /tmp/csie || echo "not exist" && echo "exist"   %*<== 錯誤*)
    
  5. 習題:以 ls 測試目錄 /tmp/s9427??? 是否存在,若存在則進入目錄,若不存在,則建立目錄。
練習題
  1. 請說明指令 ls /tmp && touch /tmp/testing 中『&&』之意義?
    Sol. 前面指令 ls /tmp 執行結果正確,就接著執行後續的指令 touch /tmp/testing,否則就略過
  2. 請說明指令 ls /tmp/testing || touch /tmp/testing 中『||』之意義?
    Sol. 前面指令 ls /tmp/testing 執行有錯誤時,才執行後續的指令 touch /tmp/testing
  3. 請以 ls 測試 /tmp/csie 是否存在?若存在則顯示 "exist" ,若不存在,則顯示 "not exist"。
    Sol. ls /tmp/csie && echo "exist" || echo "not exist"



2017-06-14