可选项(options)设置用来改变shell或者脚本的行为。
set指令可以使得在一个脚本里设置可选项。
在脚本你需要设置可选项的地方,实用set -o option-name,或者采取缩写模式的set -option-abbrev。这两种形式效果等价。 比如
#!/bin/bash
set -o verbose
#Echoes all commands before executing
#---------------------------
set -v
#Exact same effect as above
如果想禁止某一个可选项,使用+,而不是-符号:
set +o option-name or set +option-abbrev
#!/bin/bash
set -o verbose
# Command echoing on.
command
...
command
set +o verbose
# Command echoing off.
command
# Not echoed.
set -v
# Command echoing on.
command
...
command
set +v
# Command echoing off.
command
exit 0
还有一种方法就是在指定shell解释器的同时设置可选项,就像下面这样:
#!/bin/bash -x
#
# Body of script follows.
当然,你可以在执行脚本的同时设定可选项,比如:
$ bash -v script-name
$ bash -o verbose script-name
上面两条指令效果相同。 有关bash的可选参数及解释见下表
缩写 名字 效果 ---------------- ----------------- -------------------------------------------------------------------- -B brace expansion 可以括号展开(缺省为on) +B brace expansion 不可以括号展开 -C noclobber 防止通过重定向覆盖文件(\>1可以覆盖此规则) -D (none) 列出$开头的双引号引起来的字符串,但是不执行脚本里的命令 -a allexport 导出所有已定义的变量 -b notify 后台任务终止时给出提示(不大用在脚本里) -c ... (none) 从...读取命令 -e errexit 当一个命令是非0状态退出时,脚本在第一个错误处中止(abort)(除until/while循环,if-tests,列表结构(命令链) -f noglob 文件名展开(通配符)禁止 -i interactive 交互模式运行脚本 -n noexec 读脚本的指令,但是不执行(做语法检测) -o option-name (none) 调用*option-name*参数 -o posix POSIX 改变bash或者调用的脚本行为,使其符合POSIX标准 -o pipefail pipe failure 管道里出现非零返回值时,使用用管道返回管道最后一个命令的推出状态 -p privileged 脚本带suid位执行(注意!) -r restricted 脚本运行在限制模式 -s stdin 从stdin读命令 -t (none) 第一个命令后退出 -u nounset 使用未定义的变量时,输出错误消息,并强制退出 -v verbose 执行指令前,将其打印到标准输出 -x xtrace 和-v类似,但是展开命令 - (none) 可选参数结束符。所有其他参数当做位置参数 -- (none) 取消位置参数设置,如果给出的参数( -- arg1 arg2),位置参数设置为参数