set -u
當腳本中遇到未定義的變量時,默認是忽略。
有時候這並不是開發者想要的。
假如有未定義的變量,應該報錯,並且終止腳本繼續運行。
set -u
就可以辦到
示例
#!/usr/bin/env bash
set -u
echo $a
echo shark
執行報錯
$ bash set.sh
set.sh: line 13: a: unbound variable
set -x
這個調試腳本是使用,可以看到每個執行的命令,和執行命令後的輸出結果。
#!/usr/bin/env bash
set -x
echo shark
和 bash -x set.sh
相同的含義。
set -e
腳本中有任何命令的返回值是非零,腳本則停止繼續執行。
對管道的命令無效,比如:
foo | echo shark
foo
不是 shell 中的命令,執行會報錯,但是其後面有個管道,最終管道後的echo
命令執行成功了,這種情況下 腳本會繼續執行。
set -o pipefail
如果設置,如果管道中的所有命令都成功退出,則返回零。 默認情況下禁用此選項