linux shell 花括号,bash shell 大括号扩展

bf997ee0637c1e0bf246ea511f9dc052.png

bash shell的扩展,指shell在分析输入命令时的一种将命令展开的操作。

参考一下man bash的扩展页:

扩展(EXPANSION) 命令行的扩展是在拆分成词之后进行的。有七种类型的扩展: brace expansion(花括号扩展), tilde expan‐ sion(波浪线扩展), parameter and variable expansion(参数和变量扩展), command substi‐ tution(命令替换), arithmetic expansion(算术扩展), word splitting(词的拆分), 和 path‐ name expansion(路径扩展)

花括号扩展的模式是一个可选的 preamble(前导字符), 后面跟着一系列逗号分隔的字符串,包含在一对花括号中, 再后面是一个可选的 postscript(附言)。

例如, a{d,c,b}e 扩展为 `ade ace abe'。

mv file{1,2,3,4}.txt bk/.

cp mydata{,$bkdate}.log

echo file-{a..d}.txt

echo file.txt{,.bak}

echo delta.{txt,doc}

序列表达式的格式为:{x..y[..incr]}。其中x和y均为数字或单个英文字母,incr表示增量(必须是整数),..incr可以省略,如果省略则表示增量为1或-1。

用在for循环

for i in {1..9..3} ; do echo $i;done

大括号扩展可以嵌套。每个扩展字符串的结果是不排序的,依然按照从左到右的顺序依次扩展。

echo a{m,n/{1..3},o}x

如果扩展中的序列表达式中的数字是整数,并且有前导0时,Bash 会试图让每个生产的量都含有同样多的位数,如果位数不同就会在前面补0,示例如下:

[root:~ #] echo {05..100..5}

005 010 015 020 025 030 035 040 045 050 055 060 065 070 075 080 085 090 095 100

注意:

大括号扩展在其他所有扩展之前进行,在其他扩展中的特殊字符都被保留下来。为了防止被认为是大括号的一部分,“{”或者“,”可以用反斜杠转义。

ls [a-z].txt{,.bak}

find . -name '*.txt' -exec cp {}{,.bak} \;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值