如何在bash中使用{}範圍表示式
在編寫 時,有時需要生成數字或字串序列。這種序列資料的一種常見用途是用於迴圈迭代。 |
雖然可以使用
seq
之類的專用工具來生成一系列數字,但 bash 本身提供大括號擴充套件,實際上沒有必要在 bash
中新增此類外部依賴項。在本教程中,讓我們瞭解如何使用大括號擴充套件在 shell 指令碼中生成資料序列和一些有用的大括號擴充套件示例。
Bash 內建的 range 函式是透過所謂的
{}
大括號擴充套件實現的。簡而言之,大括號擴充套件允許根據提供的字串和數字資料生成字串序列。大括號擴充套件的語法如下。
{<string1>,<string2>,...,<stringN>} {<start-number>..<end-number>} {<start-number>..<end-number>..<increment>} <prefix-string>{......} {......}<suffix-string> <prefix-string>{......}<suffix-string>
大括號擴充套件的第一個用例是一個簡單的字串列表,它是大括號內以逗號分隔的字串列表。這裡是簡單地列出預定義的字串資料。
下面使用for迴圈,列出大括號中的字串,如下所示。
[root@localhost ~]# for fruit in {apple,orange,lemon}; do echo $fruit ; done apple orange lemon
下面例項是同時建立多個子目錄:
[root@localhost ~]# mkdir -p /tmp/users/{dan,john,alex,michael,emma} [root@localhost ~]# ls -l /tmp/users/ total 0 drwxr-xr-x 2 root root 6 Aug 6 16:23 alex drwxr-xr-x 2 root root 6 Aug 6 16:23 dan drwxr-xr-x 2 root root 6 Aug 6 16:23 emma drwxr-xr-x 2 root root 6 Aug 6 16:23 john drwxr-xr-x 2 root root 6 Aug 6 16:23 michael
下面是建立多個空檔案:
[root@localhost ~]# touch /tmp/file{1,2,3,4}.log [root@localhost ~]# ll /tmp/ total 0 -rw-r--r-- 1 root root 0 Aug 6 16:24 file1.log -rw-r--r-- 1 root root 0 Aug 6 16:24 file2.log -rw-r--r-- 1 root root 0 Aug 6 16:24 file3.log -rw-r--r-- 1 root root 0 Aug 6 16:24 file4.log
大括號擴充套件最常見的用例是為迴圈迭代定義一個數字範圍。你可以使用以下表示式,在其中指定範圍的開始/結束,以及可選的增量值。
{<start-number>..<end-number>} {<start-number>..<end-number>..<increment>}
要定義 10 到 20 之間的整數序列:
[root@localhost ~]# echo {10..20} 10 11 12 13 14 15 16 17 18 19 20
可以在迴圈中使用:
[root@localhost ~]# for num in {10..20}; do echo $num ;done 10 11 12 13 14 15 16 17 18 19 20
如果要生成 0 到 20 之間增量為 2 的數字序列:
[root@localhost ~]# echo {0..20..2} 0 2 4 6 8 10 12 14 16 18 20
news.yesky.com/hotnews/311/109240311.shtml
news.yesky.com/hotnews/241/274908741.shtml
也可以生成一系列遞減數字:
[root@localhost ~]# echo {20..10} 20 19 18 17 16 15 14 13 12 11 10 [root@localhost ~]# echo {20..10..-2} 20 18 16 14 12 10
您還可以使用前導零填充數字,以防需要使用相同數量的數字。例如:
[root@localhost ~]# for num in {00..20..2}; do echo $num ; done 00 02 04 06 08 10 12 14 16 18 20
大括號擴充套件不僅可用於生成數字序列,還可用於生成字母序列:
[root@localhost ~]# cat brace.sh #!/bin/bash for char1 in {A..B}; do for char2 in {A..B}; do echo "${char1}${char2}" done done
使用此功能,可以輕鬆生成按順序編號的檔名列表:
[root@localhost ~]# for file in img_{00..05}.jpg; do echo $file ; done img_00.jpg img_01.jpg img_02.jpg img_03.jpg img_04.jpg img_05.jpg
最後,可以組合多個大括號擴充套件,在這種情況下會生成所有可能組合。
for char1 in {A..Z}; do for char2 in {A..Z}; do echo "${char1}${char2}" done done
透過組合兩個大括號擴充套件,下面的單個迴圈可以產生與上面相同的輸出。
for str in {A..Z}{A..Z}; do echo $str done
{}
允許您在單個
行中輕鬆生成一系列任意字串。大括號擴充套件不僅對 shell 指令碼有用,而且在
行環境中也很有用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2890649/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 匹配指定範圍整數正規表示式
- 解析如何在Bash中編寫函式函式
- 如何在 K8S 叢集範圍使用 imagePullSecret?K8S
- 教你如何在C++中實現中綴表示式轉字尾表示式C++
- bash基礎特性、正規表示式
- 02-Swift4 中 Private 的 使用範圍Swift
- 如何在 bash 中使用索引陣列索引陣列
- Java中Lambda表示式的使用Java
- Python中eval函式的表示式如何使用Python函式
- 在 bash 中使用函式函式
- SQLite中的SELECT子句使用表示式SQLite
- C語言——使用函式輸出指定範圍內的Fibonacci數C語言函式
- CSS 設定指定範圍li元素樣式CSS
- 表示式和基本語句的規範
- 中綴表示式轉字尾表示式
- 正規表示式在Java中的使用Java
- Android Studio中如何支援使用Lambda表示式Android
- 範圍分割槽
- 軟考——範圍
- 從規範看賦值表示式的解析賦值
- 中綴表示式
- 6-1 使用函式輸出指定範圍內Fibonacci數的個數函式
- 6-3 使用函式輸出指定範圍內的完數 (20分)函式
- 隨機範圍小數和隨機範圍整數隨機
- ChatGPT的使用範圍到底有多廣?ChatGPT
- 各行業需要改IP工具作用使用範圍!行業
- 使用棧結構計算中綴表示式
- TypeScript 中限制物件鍵名的取值範圍TypeScript物件
- 中綴表示式轉為逆波蘭表示式
- SciPy 應用範圍
- JavaScript 拖拽限定範圍JavaScript
- SQLite中的表示式SQLite
- 短效動態代理ip的使用範圍有哪些
- Bash函式函式
- Java中Lambda表示式基礎及使用詳解Java
- python中re模組的使用(正規表示式)Python
- 如何在 Bash 指令碼中使用單行和多行註釋指令碼
- 如何在Mac上設定系統範圍的字數統計服務Mac