set --help
$ echo $- himBHs
set -flag
set +flag
-o
設置的 flag$ set -o allexport off braceexpand on emacs on errexit off errtrace off functrace off hashall on histexpand on history on ignoreeof off interactive-comments on keyword off monitor on noclobber off noexec off noglob off nolog off notify off nounset off onecmd off physical off pipefail off posix off privileged off verbose off vi off xtrace off
-o
設置 flag# 好比命令行歷史,set -o 查看狀態變爲on set -o history
+o
取消設置 flag# 好比命令行歷史,set -o 查看狀態變爲off set +o history
顯示 shell 所讀取的輸入值,再顯示輸出html
$ set -v $ ls ls test1 test2 $ echo 123 echo 123 123
開啓腳本調試shell
如下會直接打印中間變量擴展後的值,不須要再另外打印bash
//test6 文件 #!/usr/bin/bash set -x a=$1 b=$2 $ ./test6 q ewr er + ./test6 q ewr er + a=q + b=ewr
會先將原有的位置參數 unset(至關於置空)。命令行
//文件 test5 #!/usr/bin/bash set -- echo $0 echo $1 echo $2 echo $3 $ ./test5 zz xx cc ./test5 //如下都是空行,說明不會讀取原有位置參數
再以後若是 set --
以後有參數,依次賦值給位置參數 ${1}
、${2}
...調試
//文件 test5 #!/usr/bin/bash set -- qq ww echo $0 echo $1 echo $2 echo $3 $ ./test5 ./test5 qq ww //這裏是一個空行,${3}爲空 $ ./test5 zz xx cc ./test5 qq ww //這裏是一個空行,說明${3}不會讀取腳本原有位置參數
若是 set -
以後沒有參數,原位置參數保持不變,正常讀取;-x
、-v
若是設置過的話,會被關閉。code
// 文件 test5 #!/usr/bin/bash set - echo $0 echo $1 echo $2 echo $3 $ ./test5 zz xx cc ./test5 zz xx cc
若是 set -
以後有參數,原位置參數 unset(置空)。htm
// 文件 test5 #!/usr/bin/bash set - qq echo $0 echo $1 echo $2 echo $3 $ ./test5 zz xx cc ./test5 qq