요소가 하나만 있는 경우 중괄호가 작동하지 않습니다.

요소가 하나만 있는 경우 중괄호가 작동하지 않습니다.

확장자에 따라 scp 파일을 만들 수 있습니다.

 scp sk@localhost:/home/sk/*.{txt,text} .

하지만 단일 확장 유형을 scp하려고 하면 실패합니다.

 scp sk@localhost:/home/sk/*.{txt} .

사례 #2에서 중괄호를 제거하여 이 오류를 해결할 수 있었습니다.

파일 확장자 유형만 있으므로 중괄호 사용이 실패하는 이유가 궁금합니다.

답변1

bash를 사용한다고 가정하면,문서설명하다:

올바른 형식의 중괄호 확장에는 따옴표가 없는 여는 중괄호와 닫는 중괄호, 그리고 따옴표가 없는 하나 이상의 쉼표 또는 유효한 시퀀스 표현식이 포함되어야 합니다. 잘못 형성된 중괄호 확장은 변경되지 않습니다.

따라서 {foo}이는 적절하게 형성된 중괄호 확장이 아닙니다.

$ bash -c 'echo {foo} {foo,bar}'
{foo} foo bar

답변2

"중괄호"라고 부르는 것을 종종 "중괄호"라고 하며 사용하는 기능을 "중괄호 확장"이라고 합니다. Bash 매뉴얼 페이지는 다음과 같이 문서화합니다.

   지원 확장
       중괄호 확장은 임의의 문자열을 생성할 수 있는 메커니즘입니다.
       이 메커니즘은 경로 이름 확장과 유사하지만 파일 이름 생성
       더 이상 존재할 필요가 없습니다. 중괄호를 확장하는 패턴은 다음과 같은 형식을 취합니다.
       선택적 서문 다음에 쉼표로 구분된 일련의 문자열이 옵니다.
       또는 한 쌍의 중괄호와 그 뒤에 선택적인 문자 사이의 시퀀스 표현식
       추신. 프리앰블은 각 문자열에 포함된 접두사입니다.
       중괄호를 사용한 다음 각 결과 문자열에 p.s를 추가합니다.
       왼쪽에서 오른쪽으로 확장합니다.

중괄호 안에 단일 확장을 넣으면 나열된 형식(쉼표로 구분된 문자열 또는 중괄호 쌍 사이의 시퀀스 표현식)과 일치하지 않기 때문에 중괄호 확장이 아닙니다. 따라서 확장되지 않고 동일하게 유지됩니다.

관련 정보