Bash 3.2.57 expansão de chaves {01.09} [duplicata]

0

Eu estou tendo um pequeno problema, eu não posso ir para o bash v.4 Eu sou pau para usar o bash 3.2.57. Estou inserindo meu script neste formulário logs_logs_2017-04-{02..06}.tar.bz2 , mas como o bash 3.2.57 não suporta expansão de chave com zeros à esquerda, o script é alimentado com o seguinte logs_logs_2017-04-2.tar.bz2 logs_logs_2017-04-3.tar.bz2 ..... e esses nomes de arquivo não existem.

Alguma ideia?

Obrigado!

    
por DaWe4444 12.04.2017 / 10:30

1 resposta

1

Percorra o zero inicial:

somecmd logs-0{2..9}.tar.bz2  logs-{10..15}.tar.bz2

(O 02..06 no exemplo é trivial para lidar dessa maneira.)

Ou use printf :

somecmd $(printf "logs-%02d.tar.gz " {2..15})

Isso depende da divisão de palavras e funciona apenas enquanto o nome do arquivo não tiver caracteres glob ou espaço em branco.

Feito corretamente, isso seria simples, mas um pouco longo:

files=()
for x in {2..15} ; do
    files+=( "$(printf "logs-%02d.tar.gz" $x)" )
done
somecmd "${files[@]}"
    
por 12.04.2017 / 10:58