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.bz2bash 3.2.57은 앞에 0이 있는 중괄호 확장을 지원하지 않기 때문에 스크립트에는 다음이 포함되며 logs_logs_2017-04-2.tar.bz2 logs_logs_2017-04-3.tar.bz2 .....이러한 파일 이름은 존재하지 않습니다.

어떤 아이디어가 있나요?

감사해요!

답변1

선행 0을 무시합니다.

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

관련 정보