2017年11月7日 星期二

Bash Shell | 如何使用大括號 ( { } ) 做擴展 Brace Expansion

大括號擴展 (Brace Expansion) 有兩種方式
1. 列舉方式
    在大括號中,將重複的部分列舉出來,並用分號隔開,不要有空白,如果真的需要空白,
    則在空白前加上跳脫字元( \ )

     範例:

             #!/bin/sh

             echo rootfs/{bin,dev,etc,home,lib,mnt,sbin}

      結果:

              rootfs/bin rootfs/dev rootfs/etc rootfs/home rootfs/lib rootfs/mnt rootfs/sbin

      應用:
              可以用在建立多個目錄上

      範例:

               #!/bin/sh

               mkdir -p rootfs/{bin,dev,etc,home,lib,mnt,sbin}


2. 遞增遞減方式
    在大括號中,指定首與尾,首與尾要不是數字就是單一字元,也可設定遞增遞減的量

    格式:
            {x..y[..incr]}
             x: 首
             y: 尾
             incr: 遞增遞減的量 (可有可無,預設是 1 或 -1)
             對齊:如果在 x, y 前加上 0,則有對齊效果,參考如下範例

    範例:

            #!/bin/sh

            echo {1..9}
            echo {01..12}
            echo {10..50..10}
            echo {100..080..-5}
            echo {a..d}
            echo {a..j..2}
            echo {j..a..-3}

    結果:

            1 2 3 4 5 6 7 8 9
            01 02 03 04 05 06 07 08 09 10 11 12
            10 20 30 40 50
            100 095 090 085 080
            a b c d
            a c e g i
            j g d a


沒有留言:

張貼留言