set 命令

查看幫助

set --help

查看已設置的flag

$ echo  $-
himBHs

設置flag

set -flag

取消設置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

set -v

顯示 shell 所讀取的輸入值,再顯示輸出html

$ set -v
$ ls
ls
test1  test2
$ echo 123
echo 123
123

set -x

開啓腳本調試shell

如下會直接打印中間變量擴展後的值,不須要再另外打印bash

//test6 文件
#!/usr/bin/bash
set -x
a=$1
b=$2

$ ./test6 q ewr er
+ ./test6 q ewr er
+ a=q
+ b=ewr

set --

會先將原有的位置參數 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 -

若是 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

參考

相關文章
相關標籤/搜索