Linux|系统管理|WEB开发

关注Linux,系统管理,WEB开发以及开源世界

Bash的可选项

| Comments

可选项(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),位置参数设置为参数

Comments