注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

牧笔临风

己有能,勿自私!

 
 
 

日志

 
 
 
 

shell 大括号扩展  

2010-08-16 10:17:13|  分类: shell脚本 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
大括号扩展是一种能够生成任意字符的机制;它和文件名扩展是相似的,但是生成的文件名不一定存在。进行大括号扩展的模式在形式上有一个可选的前缀;其后是一组用逗号分隔的字符串,或者是一个序列表达式,它们都在一对大括号之间,最后是一个可选的后缀。前缀部分将放在大括号中每个字符串的前面,而后缀将放在每个结果的后面,它们都是从左到右进行扩展的。例如:
[root@rock ~]# echo {a,b,c}.{mp3,txt}
a.mp3 a.txt b.mp3 b.txt c.mp3 c.txt
序列表达式的形式是
{x..y[增量]}
其中,x,y是整数或单个字符;而可选的增量是一个整数。如果使用了整数,则扩展成x到y之间的每个整数,包括x和y。所有的整数可以用“0"开头,以使每个量都有同样的宽度。当x或者y有前导的零时,shell会试图强制每个生成的量都含有同样多的数位,如果不同就在前面补零。如果使用了字符那么就扩展成在字母表中x和y之间的每个字母,包括x和y。注意,x和y必须有同样的类型。如果指定了增量,它就是每个量之间的差值。默认的增量是1或者-1,根据情况而定。

大括号扩展在其它所有扩展之前朝廷;在其它扩展中特殊的字符都被保留下来。它完全是字面上的扩展。Bash 不会对扩展的上下文文字或大括号之间的文本进行任何主义解释。为了避免与参数扩展冲突,大括号扩展不会识别字符串中的“${”。

格式正确的大括号扩展必须包含没有被引用的起始和结束大括号,还有至少一个未被引用的逗号或者序列表达式。格式不正确的大括号扩展不会被处理。

为了防止被认为是大括号扩展的一部分 { 或者 "," 可以使用反斜杠转义。

当要生成的字符串具有的公共前缀比上面的例子更长时,大括号扩展通常用来写:
mkdir /usr/local/src/bash/{old,new,dist,bugs}
chown root /usr/{ucb/{edit,ex},lib/{ex?,?*,how_ex}}
摘自《Bash中文文档》
  评论这张
 
阅读(690)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017