Ich habe ein kleines Problem, ich kann nicht auf Bash v.4 umsteigen, ich muss Bash 3.2.57 verwenden. Ich gebe mein Skript in diesem Formular ein, logs_logs_2017-04-{02..06}.tar.bz2
aber da Bash 3.2.57 keine Klammererweiterung mit führenden Nullen unterstützt, wird das Skript mit Folgendem gefüttert logs_logs_2017-04-2.tar.bz2 logs_logs_2017-04-3.tar.bz2 .....
und diese Dateinamen existieren nicht.
Irgendeine Idee ?
Danke !
Antwort1
Umgehen Sie die führende Null:
somecmd logs-0{2..9}.tar.bz2 logs-{10..15}.tar.bz2
(Das 02..06
im Beispiel ist auf diese Weise trivial zu handhaben.)
Oder verwenden Sie printf
:
somecmd $(printf "logs-%02d.tar.gz " {2..15})
Dies basiert auf der Worttrennung und funktioniert nur, solange der Dateiname keine Glob-Zeichen oder Leerzeichen enthält.
Richtig gemacht wäre das unkompliziert, aber etwas lang:
files=()
for x in {2..15} ; do
files+=( "$(printf "logs-%02d.tar.gz" $x)" )
done
somecmd "${files[@]}"