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

相关内容