我遇到了一個小問題,我無法使用 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[@]}"