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.bz2bash 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[@]}"

おすすめ記事