我遇到了一个小问题,我无法使用 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[@]}"