bash 复合命令

复合命令是以下中的一个。在大多数情况下,在一个命令的描述的列表可以从命令的其余部分由一个或多个换行符来分离,并可以随后代替分号的换行。

(list) list是在子shell环境中执行影响。shell环境变量赋值,并内建命令在命令完成后不继续有效。返回状态是列表的退出状态。

{list;} list是当前shell环境中执行。list必须以新行或分号结束。这被称为一组命令。返回状态是list的退出状态。注意与元字符(和),{和}是保留字,并在那里被允许保留字被认可必须发生。由于它们不会导致断字,他们必须从列表用空格或其他shell元字符分隔。

((expression)) 表达被根据下算术求下面描述的规则进行评价。如果表达式的值是非零,则返回0;否则返回状态是1。这完全等同于 let expression.
[[ expression ]] 返回取决于条件表达式表达式求值0或1的状态。表达式由下条件表达式如下所述的初选。之间的单词不执行单词拆分和路径扩展[[ and ]].波浪线扩展,参数和变量扩展,算术扩展,命令替换,函数替换和引用的去除执行。条件操作符例如 -f 必须不带引号被确认为初选。
当使用 【【, < 和>元操作排序字典顺序使用使用当前区域设置。
看到测试内置命令的说明(第shell内建下面命令)的参数(i.e.missing参数)的处理。

当==和!=元操作符所使用的,操作符按照右操作符。仿佛extglob外壳选项已启用。=运算符相当于==。如果shell选项nocasematch使能,而不考虑字母的情况下进行比赛。返回值是0,如果匹配字符串(==)或不匹配(!=)的模式,否则为1。模式的任何部分可以被引用,强制将匹配作为一个字符串所引用部分。

另外一个二元运算符,=〜,是可用的,具有相同的优先级==和!=。当它被使用时,串到操作员的右侧被认为是一个扩展正则表达式和相应的匹配.返回值是0,如果该字符串的模式匹配,否则为1。如果正则表达式语法不正确,则条件表达式返回值为2。如果shell选项nocasematch使能,而不考虑字母的情况下进行比赛。模式的任何部分可以被引用,强制将匹配作为一个字符串所引用部分。正则表达式中括号表达式必须谨慎对待,因为正常的引号字符失去括号它们的含义。如果该模式被存储在一个shell变量,引用变量扩大强制匹配作为一个字符串的整个格局。正则表达式内括号内的子表达式匹配的子字符串保存在数组变量BASH_REMATCH。索引为0 BASH_REMATCH的元素是匹配整个规范表达式的串的部分。与索引n BASH_REMATCH的元件是相匹配的第n个括号的子表达式的串的部分。

表达式可以用下列操作符结合,优先级递减的顺序列出:
( expression )
返回表达式的值。这可以用来覆盖运营商的正常优先级。
(!expression)
如果表达式为假,这个结果为真。
expression1 && expression2
expression1 和expression2 二者为真,则表达式为真;否则为假。
expression1 || expression2
如果expression1和expression2两者为假,则表达式为假;否则为真。
&&和||如果表达式1的值是足以确定整个条件表达式的返回值运算不评价表达式2。

for name [ [ in [ word … ] ] ; ] do list ; done
以下n个字的列表展开,生成的项目的列表。变量名称设置为这个列表反过来的每个元素,每一次执行列表。如果省略了字,for命令对于设置每个位置参数执行一次表。返回状态是最后执行的命令的退出状态。如果没有命令执行,扩展的名称为0

for (( expr1 ; expr2 ; expr3 )) ; do list ; done
首先,算术表达式expr1的根据下算术求下面描述的规则进行评价。算术表达式expr2为然后重复计算,直到它等于0。每次表达式2计算为一个非零值,则执行列表和算术表达式表达式3进行评价。如果省略任何表达式,它的行为就好像它的计算结果为1。返回值是执行,还是假的,如果任何表达式非法在列表中的最后一个命令的退出状态。

select name [ in word ] ; do list ; done
以下n个字的列表展开,生成的项目的列表。这组扩大的话印在标准错误上,每个前面加上一个数字。如果省略n个字的位置参数。然后,PS3提示,并显示一条线从标准输入读取。如果该行包括对应于所显示的字之一的一些,那么姓名的值被设置为字。如果该行是空的,将再次显示单词和提示。如果EOF被读取后,命令完成。直到执行break命令列表是每次选择后执行。select的退出状态,如果没有命令被执行list中执行的最后一个命令的退出状态,或零。

case word in [ [(] pattern [ | pattern ] … ) list ;; ] … esac
案例命令首先扩大了字,并尝试匹配它反过来每个模式,使用相同的匹配规则路径扩展.这个词是用波浪线扩展,参数和变量扩展,算术替换,命令替换进程替换和引用的删除扩展。检查每个模式都采用波浪线扩展,参数和变量扩展,算术替换,命令替换和进程替换扩大。如果shell选项nocasematch使能,而不考虑字母的情况下进行比赛。当找到一个匹配,则执行相应的清单。使用;&代替;;使执行与下一组模式相关联的列表。使用;;&代替;;的使壳中的声明,以测试下一图案列表中,如果有的话,并在成功的匹配执行任何相关的列表。退出状态是零,如果没有模式匹配。否则,它是名单中最后执行的命令的退出状态。

if list; then list; [ elif list; then list; ] … [ else list; ] fi
被执行,如果列表。如果其退出状态为零,则执行该列表。否则,每个elif的名单依次执行,如果其退出状态为零,则执行相应的话列表和命令完成。否则,执行其他列表中,如果存在的话。退出状态是最后执行的命令的退出状态,或者零,如果所有条件都不满足。

while list-1; do list-2; done
until list-1; do list-2; done
while命令连续执行清单列表-2,只要在列表列表-1返回零退出状态的最后一个命令。在直到命令是相同的,而命令,除了测试是否定的;只要在列表1中最后一个命令返回非零退出状态列表-2执行。在while和until命令的退出状态是,如果被执行没有在列表-2,或零最后执行的命令的退出状态。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值