bash的扩展介绍
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇文章主要介绍bash中的扩展。其中重点介绍了bash中的花括号扩展Brace Expansion,详细介绍了括号扩展的定义和格式,有一定的参考价值,有需要的朋友可以参考一下。bash的所有扩展(e
千家信息网最后更新 2025年12月02日bash的扩展介绍本篇文章主要介绍bash中的扩展。其中重点介绍了bash中的花括号扩展Brace Expansion,详细介绍了括号扩展的定义和格式,有一定的参考价值,有需要的朋友可以参考一下。
- bash的所有扩展(expansion)如下:
Brace Expansion(花括号扩展)
Tilde Expansion(波浪号扩展)
Parameter and Variable Expansion (参数和变量扩展)
Command Substitution(命令置换)
Arithmetic Expansion(算数扩展)
Word Splitting(单词分割)
Pathname Expansion(路径扩展)
上面列举的顺序正是bash在扩展时的顺序
- 花括号展开的定义(Brace Expansion)
花括号扩展也称大括号扩展,是可以让bash生成任意字符串的一种扩展功能。它与"路径扩展"非常相似,唯一不同的是生成的字符串可以是不存在的路径或者文件名
在bash中,花括号扩展在诸多扩展中优先级最高,因此类似于echo {a,b}$PATH的语句在完成花括号扩展之后的结果应该为 a$PATH b$PATH,而对PATH环境变量的扩展要到后续的"参数和变量扩展"阶段才开始 - 花括号扩展的两种格式
3.1 第一类格式为:
preamble+{string1,string2,string3,...,stringN}+postcript
左右的花括号是必须的,中间的字符串列表分别由逗号隔开,注意逗号前后不能有空格,如果string中有空格,则需要单引号或者双引号扩起来
bash在实际扩展时,会将preamble和花括号中的所有字符串(按照从左到右的顺序)相连,最后分别加上postscript。
此外,花括号中间至少有一个逗号,否则bash不会认为花括号扩展,例如:
echo {moneny},想要输出money,需要改为echo{money,} 如下:
[root@master01 ~]# echo {money}
{money}
[root@master01 ~]# echo {money,}
money
查看完整的例子(注意空格的处理)
[root@master01 ~]# echo sp{el,il,al}l
spell spill spall
[root@master01 ~]# echo sp{el,il, al}l
sp{el,il, al}l
[root@master01 ~]# echo sp{el,il,' al'}l
spell spill sp all
[root@master01 ~]# echo sp{el,il," "al}l
spell spill sp all
[root@master01 ~]# echo sp{el,il,' 'al}l
spell spill sp all
[root@master01 ~]# echo sp{el,il," al"}l
spell spill sp all
3.2 第二类格式为:
preamble+{.. ..[INCR]}+postscript
其中.. 组合而成的表达式术语叫做序列表达式(sequence expansion),表示一个特定的范围。当 和 是数字,代表的是数字范围;当 和 是单个字母时,代表是字符范围(默认LC_ALL字符排列)。 和 必须同为数字或者字母,否则bash不认为是花括号扩展,而是原样输出。
[root@master01 ~]# echo {1..12}
1 2 3 4 5 6 7 8 9 10 11 12
[root@master01 ~]# echo {3..-2}
3 2 1 0 -1 -2
[root@master01 ~]# echo {a..g}
a b c d e f g
[root@master01 ~]# echo {h..a}
h g f e d c b a
其中的是可选的,代表的是区间范围的递增数,它必须是数字。例如:
[root@master01 ~]# echo {0..10..2}
0 2 4 6 8 10
从0开始,每递增2个数字就取出相应的数字。
如果不指定,那么默认是1或者是-1,具体是1或者-1,要看前面区间范围是递增还是递减的,比如上面例子的{a..g}中默认是1,{h..a}默认为-1
另外,当和 是数字时,我们可以通过数字前面加0来输出结果长度保持一致,
[root@master01 ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@master01 ~]# echo {01..10}
01 02 03 04 05 06 07 08 09 10
[root@master01 ~]# echo {001..10}
001 002 003 004 005 006 007 008 009 010
这样格式长度一样,会显得很美观
括号
数字
字符
格式
范围
字符串
代表
变量
路径
逗号
顺序
输出
例子
内容
区间
参数
字母
引号
更多
结果
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全宣传图片手绘
vb能做数据库
白银市网络安全和信息化工作会议
网络安全 挂图作战
青岛联新网络技术
别墅服务器机房
网络安全管理员职位表
校园网络安全教育知识讲座
定义多个数据库
unity3d服务器开发
什么是应用程序软件开发
计算机网络安全技术的含义
邯郸python软件开发怎么样
服务器做完raid再做磁盘分区
r730服务器功率
福建商业软件开发价格多少
酸酸乳服务器免费
网络安全在职学校
杭州10大软件开发公司
天域互联网科技中心物管
支持删除mysql数据库
南京erp软件开发包括哪些费用
网络安全方面工作计划
服务器搭建授权码
合肥驰铭互联网科技有限公司
数据库表格中的位数
开黑啦怎么看服务器吗
r730服务器功率
软件开发中需要写哪些代码
数据库如何打开bak文件