当前位置: 首页 > 文档资料 > Shell 中文文档 >

第30章. 选项

优质
小牛编辑
122浏览
2023-12-01

选项用来更改shell或/和脚本行为的机制.

set命令用来在脚本里激活各种选项. 在脚本中任何你想让选项生效的地方,插入 set-o option-name或, 用更简短的格式, set-option-abbrev. 这两种格式都是等价的.

   1       #!/bin/bash
   2
   3       set -o verbose
   4       # 执行前打印命令.
   5       
   1       #!/bin/bash
   2
   3       set -v
   4       # 和上面的有完全相同的效果.
   5       

 

为了在脚本里停用一个选项,插入 set +o option-nameset+option-abbrev.

   1       #!/bin/bash
   2
   3       set -o verbose
   4       # 激活命令回显.
   5       command
   6       ...
   7       command
   8
   9       set +o verbose
  10       # 停用命令回显.
  11       command
  12       # 没有回显命令了.
  13
  14
  15       set -v
  16       # 激活命令回显.
  17       command
  18       ...
  19       command
  20
  21       set +v
  22       # 停用命令回显.
  23       command
  24
  25       exit 0
  26       

另一个在脚本里启用选项的方法是在脚本头部的#!后面指定选项.

   1       #!/bin/bash -x
   2       #
   3       # 下面是脚本的主要内容.
   4       

从命令行来激活脚本的选项也是可以办到的. 一些不能和set一起用的选项可以用在命令行指定. -i是其中之一, 可以使脚本以交互方式运行.

bash -v script-name

bash -o verbose script-name

下面的表格列举了一些有用的选项. 它们都可以用简短格式来指定(以一个短横线开头)也可以用完整的名字来指定(用双短横线开头或用-o来指定).

表 30-1. Bash 选项

缩写名称作用
-Cnoclobber防止重定向时覆盖文件 (此作用会被>|覆盖)
-D(none)列出双引号引起的含有$前缀的字符串,但不执行脚本中的命令
-aallexport导出所有定义的变量到环境变量中
-bnotify当后台任务终止时给出通知 (在脚本中用的不多)
-c ...(none)...读命令
-eerrexit脚本发生第一个错误时就中止脚本运行,即当一个命令返回非零值时退出脚本 (除了untilwhile loops, if-tests, list constructs)
-fnoglob文件名替换停用(指像*这样的符号不能替换为文件名了)
-iinteractive使脚本以交互式方式运行
-nnoexec从脚本里读命令但不执行它们(语法检查)
-o Option-Name(none)调用Option-Name选项
-o posixPOSIX更改Bash或脚本的行为,使之符合POSIX标准.
-pprivileged脚本作为"suid"程序来运行(小心!)
-rrestricted脚本在受限模式中运行 (参考第21章).
-sstdin从标准输入读命令
-t(none)第一个命令后就退出
-unounset当使用一个未定义的变量时产生一个错误信息,并强制退出脚本。
-vverbose执行命令之前打印命令到标准输出
-xxtrace-v相似, 但打印完整的命令
-(none)选项列表结束的标志. 后面的参数是位置参数(positionalparameters).
--(none)释放位置参数.如果参数列表被指定了(-- arg1 arg2),则位置参数被依次设置为参数列表中的值.