Linux

您所在的位置:网站首页 brace用法 Linux

Linux

#Linux| 来源: 网络整理| 查看: 265

花括号扩展可以让我们按照花括号里的模式创建一连串字符串。 例如:

echo Love_{a,b,c}_Forever

可以看到打印了:

Love_a_Forever Love_b_Forever Love_c_Forever

由于默认模式下,不能忽略空格,这里使用_代替空格。 这里的开头部分Love_被称为前导字符(preamble),结尾部分_Forever被称为附言(postscript)。

我们还可以按顺序输出设定范围内的字母或者数字,例如:

echo {1..10}

终端里将打印出:

1 2 3 4 5 6 7 8 9 10

打印字母的时候有点特殊问题,我们先来看下面按序输出大写的A到Z的字母:

echo {A..Z} A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

再来看全是小写字母a到z:

echo {a..z} a b c d e f g h i j k l m n o p q r s t u v w x y z

目前为止都很正常,但是我们输入:

echo {A..z}

这时候打印出的是:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z

可以看到先输出全部大写字母,然后出现一堆符号,然后再全部小写字母。很奇怪对吧,等会再解释为什么这样,我们再来看输入:

echo {a..Z}

这时候返回的是:

a ` _ ^ ] [ Z

更加奇怪了是不是,这是为什么呢? 我们来看一个东西,ASCII码表: ASCII码表

这时候我们看65号的A到122号的z之间,除了大小写字母之外,是不是出现了那堆奇怪的符号。这是因为花括号扩展的顺序是按照ASCII码表的顺序输出的。 这时候我们也就可以理解echo {a..Z}为什么会返回那段字符串了,因为在ASCII码表中其实是倒序的。

不过经过测试可以发现,由于其他符号有已经被赋予特殊含义,就只有大小写字母之间会出现这个问题。需要在使用中注意哦!

花括号扩展支持嵌套,例如:

echo c{a{1,4},b{2,3}}d ca1d ca4d cb2d cb3d

花括号扩展普遍应用于创建一系列文件或者目录,这时候就可能需要按照时间来命名,手动输入一个个输入太麻烦了,这时候也可以使用花括号扩展,如下:

mkdir {2018..2021}-{01..12} 2018-1 2018-2 2018-3 2018-4 2018-5 2018-6 2018-7 2018-8 2018-9 2018-10 2018-11 2018-12 2019-1 2019-2 2019-3 2019-4 2019-5 2019-6 2019-7 2019-8 2019-9 2019-10 2019-11 2019-12 2020-1 2020-2 2020-3 2020-4 2020-5 2020-6 2020-7 2020-8 2020-9 2020-10 2020-11 2020-12 2021-1 2021-2 2021-3 2021-4 2021-5 2021-6 2021-7 2021-8 2021-9 2021-10 2021-11 2021-12

可以看到01自动变成1,这样不能让月份都为两位,不好看。可以这样:

mkdir {2018..2021}-0{1..9} {2018..2021}-{10..12} 2018-01 2018-02 2018-03 2018-04 2018-05 2018-06 2018-07 2018-08 2018-09 2018-10 2018-11 2018-12 2019-01 2019-02 2019-03 2019-04 2019-05 2019-06 2019-07 2019-08 2019-09 2019-10 2019-11 2019-12 2020-01 2020-02 2020-03 2020-04 2020-05 2020-06 2020-07 2020-08 2020-09 2020-10 2020-11 2020-12 2021-01 2021-02 2021-03 2021-04 2021-05 2021-06 2021-07 2021-08 2021-09 2021-10 2021-11 2021-12


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3