bash参考手册之四(shell内建命令)续一

4.1 Bourne shell的内建命令 (续)


export

export [-fn] [-p] [name[=value]]

在环境中,标记每个被传送到子shell中的name。如果使用-f选项,则name指的是shell函数,否则name指的是shell变量。 -n选项意味着,不再为导出而标记每一个name。如果没有指定name,或如果使用-p选项,则显示已经导出的名称的列表。 -p选项显示的输出形式,可以重用为输入。如果变量名的后面是=value,则变量的值被设置为value
返回值是零,除非提供了无效的选项,其中一个名字不是一个有效的shell变量名,或者带-f选项的名字不是一个shell函数的名称。

getopts

getopts optstring name [args]

getopts被shell脚本用来解析位置参数。 optstring中包含需要识别的选项字符;如果字符后面跟着一个冒号,则预计该选项会有一个参数,应该用空格分开选项。冒号(’:‘)和问号(’?‘)不能被作为选项字符。每次调用getopts时,该命令把下一个选项放到shell变量name中,如果name不存在,就初始化它,同时,下一个参数的索引被记录到变量OPTIND中。 每次调用shell或shell脚本时,OPTIND被初始化为1。当一个选项需要一个参数时,getopts把那个参数放到变量OPTARG中。 shell不会自动复位OPTIND;如果要使用一组新的参数,则需要在同一个shell中多次调用getopts时,手动复位。
当遇到选项结束时,getopts将退出,并且返回值大于零。 OPTIND被设置为第一个非选项参数的索引,name设置为‘?’。
getopts一般用来解析位置参数,但如果在args中有更多的参数,则getopts解析args中的参数。
getopts可以通过两种方式报告错误。如果optstring中的第一个字符是一个冒号,使用(silent)静默错误报告。一般地,当遇到无效选项或者缺少选项参数的情况时,打印诊断消息。如果变量OPTERR被设置为0,则不显示错误消息,即使optstring中的第一个字符不是冒号。
如果一个无效的选项出现,getoptsname置为‘?’,如果不是静默模式,打印错误消息并取消OPTARG的设置。如果getopts是在静默模式,找到的选项字符被放置在OPTARG,且不打印诊断消息。
如果没有找到所需的参数,并且getopts是非静默模式,则一个问号(‘?’)被放置在name中,OPTARG被取消设置,然后打印诊断消息。如果getopts是静默模式,则一个冒号(‘:’)被放置在name中,然后OPTARG被设置为找到的选项字符。

hash

hash [-r] [-p filename] [-dt] [name]

每一次hash被调用时,它会记住为name参数指定的命令的全路径名,因此在后续调用时不需要搜索该命令。在$PATH列出的目录中搜索该命令。任何先前记住的路径名被丢弃。 -p选项抑制路径搜索,并且把filename作为name的位置。 -r选项,令shell忘记所有已经记住的位置。使用-d选项,使shell忘记每一个已经记住的name的位置。如果使用-t选项,每个name对应的完整路径名被打印出来。如果有多个name,并且带-t选项,则哈希全路径名前打印name。 使用-l选项,导致输出中显示可在输入中重复使用的格式。如果没有参数,如果只有-l选项,记住的命令信息被打印出来。返回值是零,除非有一个name没有被找到,或提供了无效的选项。

pwd

pwd [-LP]

打印当前的工作目录的绝对路径名。如果使用-p选项,打印的路径名中不包含符号链接。如果使用-L选项,打印的路径名可包含符号链接。返回状态是零,除非在确定当前目录时遇到错误,或者,提供了无效的选项。

readonly

readonly [-aAf] [-p] [name[=value]] …

把每个name标记为只读。这些name的值在后续赋值时,不会被改变。如果使用-f选项,每一个name是指一个shell函数。 使用-a选项,表示每个name是一个索引的数组变量;使用-A选项,是指每个name,指向的是一个关联数组变量。如果两个选项同时出现,则-A最优先。如果没有name参数,或者,如果使用-p选项,打印所有的只读的name。其他选项可用于将输出限制为只读name的组的一个子集。 使用-p选项,导致输出中显示可在输入中重复使用的格式。如果一个变量名后面是=value,则变量的值被设置为value。返回状态是零,除非提供了无效的选项,name参数之一不是有效的shell变量或函数的名称,或有-f选项时,name不是shell函数。

return

return [n]

引起一个shell函数携带返回值n退出。如果未提供n,则返回值是函数中执行的最后一个命令的退出状态。这也可以用于终止使用内建命令.(source)启动并执行的脚本的执行,返回值是n,或在脚本中执行的最后一个命令的退出状态,此返回值作为脚本的返回值。任何和RETURN陷阱关联的命令,在函数或脚本之后继续执行命令之前执行。如果在函数之外使用return,并且不是通过.(source)启动并执行的脚本,则返回状态是非零值。

shift

shift [n]

把位置参数向左移动n个位置。从 n+1 … $#的位置参数被重新命名为$1 … $#-n。从$# 到 $#-n+1 的数字所代表的参数被取消设置。 n必须是一个小于或等于$#非负的数。如果n是零,或大于$#,位置参数不改变。如果没有n,则它被假定为1。返回状态是为零,除非n大于$#或小于零,否则返回非零值。

test

[

计算一个条件表达式expr。每个操作符和操作数必须是分开的参数。表达式的组成部分,见下述Bash中的条件表达式的描述。test不接受任何选项,也不接受和忽略带--的参数选项。
当使用[形式时,该命令的最后一个参数必须是一个]
表达式可以使用下面的操作符结合,并且以优先级降低的顺序列出。计算依赖于参数的个数,见下文。当有5个或更多参数使,使用运算符优先级。

! expr

如果expr是假,结果为真。

( expr )

返回expr的值。可用于覆盖正常的运算优先级。

expr1 -a expr2

如果expr1expr2都是真,结果为真。

expr1 -o expr2

如果expr1或者expr2是真,结果为真。

test[内建命令,使用基于参数个数的一组规则计算条件表达式。

0个参数

表达式结果为假。

1个参数

当且仅当表达式非空时,结果为真。

2个参数

如果第一个参数是'!',当且仅当第二个参数为空时,表达式为真。如果第一个参数是一个一元条件运算符(参见bash的条件表达式),如果一元的测试结果为真,表达式为真。如果第一个参数不是一个有效的一元运算符,表达式为假。

3个参数

以下条件适用于列出的顺序。如果第二个参数是一个的二进制条件运算符(请参阅Bash的条件表达式),表达式的结果是使用的第一个和第三个参数作为操作数的二进制测试的结果。有三个参数的情况下, '-a'和'-o'运算符被认为是二元运算符。如果第一个参数是'!',使用第二个和第三个参数进行2个参数的test结果的否。如果第一个参数是'(',并且第三个参数是')',结果对第二个参数进行1个参数的test的结果。否则,表达式为假。

4个参数

如果第一个参数是'!',结果是其余参数的3个参数test的结果的否。否则,表达式根据上面列出的优先级规则,被分解和计算。

5个及更多参数

表达式根据上面列出的优先级规则,被分解和计算。

当和test或者'['同时使用时,'<' '>'使用ASCII顺序进行词典序排序。

times

times

打印shell和子shell使用的用户和系统时间。返回值是0。

trap

trap [-lp] [arg] [sigspec …]

在shell收到sigspec信号时,读取和执行在arg中的命令。如果arg未指定(同时有一个sigspec),或arg是' - ',则每一个指定信号的值被重置到该shell启动时它的值。如果arg是空字符串,那么每一个sigspec指定的信号被shell和该shell调用的命令忽略。如果arg未指定,并且有-p选项,则shell显示和每个sigspec关联的陷阱命令。如果没有提供参数,或只有-p选项,则trap打印和每个信号编号关联的命令列表,列表的形式可以被重用为shell的输入。 -l选项,使shell打印信号名称及其相应编号的列表。每个sigspec可以是信号名或信号编号。信号名不区分大小写,SIG前缀是可选的。
如果sigspec是0或EXITarg在shell退出时执行。如果sigspecDEBUG,则arg的执行点在以下命令之前:每一个简单命令、for命令,case命令,select命令,每个算术for命令,和shell函数中的第一个命令执行之前。关于DEBUG陷阱的效果的详细信息,请参阅内建命令shoptextdebug选项的描述(见内建命令shopt)。如果sigspecRETURN,则命令arg在每个shell函数执行一次,或者,在使用.或者source内建命令执行的脚本执行结束时执行一次。
如果sigspecERR,除了下列条件,当一个简单命令有一个非零退出状态时,命令arg被执行。 ERR陷阱在以下情况不执行:如果失败的命令是紧跟在until或者while关键字后面的命令列表的一部分,紧跟在if或者elif关键字之后的测试的一部分,在&&或| |列表中执行的命令的一部分,或该命令的返回状态被翻转。这些条件和errexit选项具有相同的条件。
在进入shell时忽略的信号,不能被捕获或重置。没有被忽略的信号,在被捕获后,被复位到子shell或shell环境被创建时的原始值。
返回状态是零,除非sigspec没有指定一个有效的信号。

umask

umask [-p] [-S] [mode]

设置shell进程的文件创建掩码为mode。如果mode以数字开头,则它被解释为一个八进制数;如果不是,它被解释为一个类似于可用于chmod命令的符号模式掩码。如果省略mode,则打印当前掩码的值。如果使用-S选项,且没有mode参数,则模式被打印为符号格式。如果有-p选项,并省略mode参数,则输出是可以重用为输入的形式。如果模式成功地被改变,或者,没有mode参数,则返回状态是零,否则返回非零值。
需要注意的是,当模式被解释为一个八进制数,每个umask中的数字被7减。因此,umask为022的结果是755。

unset

unset [-fv] [name]

每一个名为name的变量或函数被删除。如果不提供任何选项,或使用-v选项,每个name指一个shell变量。如果使用-f选项,name是指shell函数,则函数的定义被删除。只读变量和函数不会被取消设置。返回值是零,除非name是只读的。



原文链接:http://www.gnu.org/software/bash/manual/bash.html#Shell-Builtin-Commands


你可能感兴趣的:(shell)