簡體   English   中英

bash中數組的內聯擴展

[英]Inline expansion of arrays in bash

我正在嘗試在bash中擴展一個數組:

FILES=(2009q{1..4})
echo ${FILES[@]}
echo ${FILES[@]}.zip

輸出是:

2009q1 2009q2 2009q3 2009q4
2009q1 2009q2 2009q3 2009q4.zip

但是如何在echo 2009q{1..4}.zip擴展中擴展最后一行,以便最后一行看起來像:

2009q1.zip 2009q2.zip 2009q3.zip 2009q4.zip

...但是使用數組FILES

FILES=(2009q{1..4})
echo ${FILES[@]/%/.zip}

輸出:

2009q1.zip 2009q2.zip 2009q3.zip 2009q4.zip

從Bash的參數擴展

${parameter/pattern/string} :擴展模式以生成模式,就像在文件名擴展中一樣。 擴展參數,並將模式與其值的最長匹配替換為字符串。 如果pattern以'/'開頭,則pattern的所有匹配都將替換為string。 通常只替換第一場比賽。 如果pattern以'#'開頭,則它必須在參數的擴展值的開頭匹配。 如果pattern以'%'開頭,則它必須在參數的擴展值的末尾匹配。 如果string為null,則刪除pattern的匹配,並且可以省略/ following模式。 如果參數是'@'或' ',則替換操作依次應用於每個位置參數,並且擴展是結果列表。 如果parameter是一個用'@'或' ' 下標的數組變量 ,則替換操作依次應用於數組的每個成員,並且擴展是結果列表。

你可以使用printf

printf "%s.zip " "${FILES[@]}"

2009q1.zip 2009q2.zip 2009q3.zip 2009q4.zip

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM