다음 명령은 무엇을 수행하며 어떤 결과를 제공합니까?
echo "{$begin_dt/{0[7-9],1*,2*},$dates/*,$next_dt/0[0-6]}"
$begin_dt
날짜 는 어디에 $next_dt
있고 날짜는 무엇입니까?
답변1
질문 제목의 문자열은 질문 자체의 문자열과 약간 다릅니다. 즉, 후자는 따옴표로 묶여 있지만 제목의 것은 그렇지 않습니다.
외부인용하다,버팀대 {...}
확장중괄호 옆의 문자열에 추가하고 중괄호 안의 쉼표로 구분된 모든 문자열을 연결합니다. 즉 , 및 string{this,that}
로 확장되므로 공통 부분이 중복되지 않습니다.stringthis
stringthat
그 후에 파일 이름 글로빙이 발생하므로 이와 유사한 것이 dir/{0[7-9],1*,2*}
로 확장되고 dir/0[7-9]
그 모든 것이 일치하는 파일 이름으로 확장됩니다 dir/1*
.dir/2*
파일명이 월의 두 자리 일인 경우 숫자 07부터 29까지 일치합니다. (그러나 30이나 31은 일치하지 않습니다!)
예제의 외부 버팀대 그룹도 비슷하게 확장됩니다.
~에따옴표, 중괄호 등 특별한 내용은 없고, 파일명 확장은 하지 않아 변수만 확장한다.
중괄호 확장이 포함된 Bash 및 기타 셸에서 이는 POSIX sh 기능이 아닙니다.