set參數介紹
set指令能設置所使用shell的執行方式,可依照不同的需求來做設置
-a 標示已修改的變量,以供輸出至環境變量。
-b 使被中止的后台程序立刻回報執行狀態。
-C 轉向所產生的文件無法覆蓋已存在的文件。
-d Shell預設會用雜湊表記憶使用過的指令,以加速指令的執行。使用-d參數可取消。
-e 若指令傳回值不等於0,則立即退出shell。
-f 取消使用通配符。
-h 自動記錄函數的所在位置。
-H Shell 可利用"!"加<指令編號>的方式來執行history中記錄的指令。
-k 指令所給的參數都會被視為此指令的環境變量。
-l 記錄for循環的變量名稱。
-m 使用監視模式。
-n 只讀取指令,而不實際執行。
-p 啟動優先順序模式。
-P 啟動-P參數后,執行指令時,會以實際的文件或目錄來取代符號連接。
-t 執行完隨后的指令,即退出shell。
-u 當執行時使用到未定義過的變量,則顯示錯誤信息。
-v 顯示shell所讀取的輸入值。
-x 執行指令后,會先顯示該指令及所下的參數。
+<參數> 取消某個set曾啟動的參數。
set -x介紹
用於腳本調試,在liunx腳本中可用set -x就可有詳細的日志輸出.免的老是要echo了
示例
#!/bin/bash set -x a=${1} b=$
運行結果
bash a.sh 1 2 + a=1 + b=1
set -e介紹
-----------------------------------------------------------
#!/bin/bash set -e command 1 command 2 ... exit 0 ----------------------------------------------------------
你寫的每個腳本都應該在文件開頭加上set -e,這句語句告訴bash如果任何語句的執行結果不是true則應該退出。這樣的好處是防止錯誤像滾雪球般變大導致一個致命的錯誤,而這些錯誤本應該在之前就被處理掉。如果要增加可讀性,可以使用set -o errexit,它的作用與set -e相同。
使用-e幫助你檢查錯誤。如果你忘記檢查(執行語句的結果),bash會幫你執行。不幸的是,你將無法檢查$?,因為如果執行的語句不是返回0,bash將無法執行到檢查的代碼。你可以使用其他的結構:
command if [ "$?"-ne 0]; then echo "command failed"; exit 1; fi could be replaced with
能夠被代替為command || { echo "command failed"; exit 1; }
或者
if ! command; then echo "command failed"; exit 1; fi
如果你有一個命令返回非0或者你對語句執行的結果不關心,那你可以使用command || true,或者你有一段很長的代碼,你可以關閉錯誤檢查(不使用set -e),但是我還是建議你保守地使用這個語句。