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

Связанный контент