프로그램에 전달될 일련의 매개변수를 생성하시겠습니까?

프로그램에 전달될 일련의 매개변수를 생성하시겠습니까?

현재 VLC에서 여러 파일을 동시에 재생하기 위해 중괄호와 글로빙의 조합을 사용하고 있습니다.

vlc K20-{06,07,08,09,10,11,12,13,14,15,16,17}*

하지만 숫자는 항상 완전한 순서입니다. 좀 더 간단하게 지정할 수 있는 방법이 있을까요?

vlc K20-{06-17}*

? 어쩌면 seq어떤 식으로든 사용될 수도 있지 않을까요?

나는 사용할 수 있다

   $ echo K20-{$(seq -s, -f "%02.0f" 06 17)}*
K20-{06,07,08,09,10,11,12,13,14,15,16,17}*

하지만 확장될 것 같지는 않습니다 *. 해결 방법이 있나요?

답변1

@steeldriver가 지적했듯이 K20-{06..17}*다루었습니다.

예를 들어 echo테스트/검증에 사용합니다.

$ echo vlc K20-{06,07,08,09,10,11,12,13,14,15,16,17}*
vlc K20-06* K20-07* K20-08* K20-09* K20-10* K20-11* K20-12* K20-13* K20-14* K20-15* K20-16* K20-17*
$ echo vlc K20-{06..17}*
vlc K20-06* K20-07* K20-08* K20-09* K20-10* K20-11* K20-12* K20-13* K20-14* K20-15* K20-16* K20-17*

*현재 작업 디렉토리에 이름과 일치하는 파일이 있는 경우에도 확장됩니다.

이렇게 하면 vlc K20-{06..17}*원하는 효과를 얻을 수 있습니다.

bash 확장에 대한 자세한 내용을 보려면 다음을 방문하세요.GNU Bash 참조 매뉴얼 - Brace 확장. 또는 man bash다음에서 읽어보세요:

시퀀스 표현식은 {x..y[..incr]} 형식을 취합니다. 여기서 x와 y는 정수 또는 단일 문자이고 incr(선택적 증분)은 정수입니다.

그래서:

$ echo K20-{06..10}
K20-06 K20-07 K20-08 K20-09 K20-10

$ echo K20-{06..10..2}
K20-06 K20-08 K20-10

관련 정보