Bash 3.2.57 大括號擴充 {01..09}

Bash 3.2.57 大括號擴充 {01..09}

我遇到了一個小問題,我無法使用 bash v.4,我堅持使用 bash 3.2.57。我以這種形式輸入我的腳本logs_logs_2017-04-{02..06}.tar.bz2,但由於 bash 3.2.57 不支援帶有前導零的大括號擴展,因此腳本將包含以下內容,logs_logs_2017-04-2.tar.bz2 logs_logs_2017-04-3.tar.bz2 .....並且這些檔案名稱不存在。

任何想法 ?

謝謝 !

答案1

繞過前導零:

somecmd logs-0{2..9}.tar.bz2  logs-{10..15}.tar.bz2

02..06以這種方式處理範例中的 是微不足道的。)

或使用printf

somecmd $(printf "logs-%02d.tar.gz " {2..15})

這依賴於分詞,並且僅在檔案名稱不包含全域字元或空格的情況下才有效。

如果做得正確,這會很簡單,但有點長:

files=()
for x in {2..15} ; do
    files+=( "$(printf "logs-%02d.tar.gz" $x)" )
done
somecmd "${files[@]}"

相關內容