하위 폴더에 있는 텍스트 파일을 연결하려고 시도 중입니다.
cat ./{mainfolder1,mainfolder2,mainfolder3}/{subfolder1}/book.txt > out$var
그러나 이것은 아무것도 반환하지 않습니다. 따라서 존재하지 않는 "subfolder2"를 추가해 보십시오.
cat ./{mainfolder1,mainfolder2,mainfolder3}/{subfolder1,subfolder2}/book.txt > out$var
이번에는 작동했고 파일이 성공적으로 연결되었습니다. 왜 이런 일이 발생합니까?
답변1
정의에 따라 GNU Bash의 중괄호 확장에는 시퀀스 표현식이나 쉼표로 구분된 값 목록이 필요합니다.
중괄호를 확장하는 패턴은 선택적 서문, 그 뒤에 일련의 쉼표로 구분된 문자열 또는 한 쌍의 중괄호 사이의 시퀀스 표현식, 그 뒤에 선택적 포스트스크립트의 형태를 취합니다.
당신은 할 수설명서를 읽어보세요더 알아보기.
몇 가지 간단한 예:
echo {subfolder1}
{subfolder1}
echo {subfolder1,subfolder2}
subfolder1 subfolder2
echo subfolder{1}
subfolder{1}
echo subfolder{1..2}
subfolder1 subfolder2
답변2
{subfolder1}
{subfolder1}
다른 선택지가 없기 때문에 로 평가됩니다 . 대신 사용하십시오 subfolder1
.
답변3
중괄호는 {abc,def}와 같이 쉼표로 구분된 문자열이나 {a..e}와 같은 범위가 그 사이에 지정된 경우에만 확장됩니다.
귀하의 경우에는 이렇게 할 필요가 없으므로 중괄호로 묶지 않고 subfolder1 을 작성할 수 있습니다.
cat ./{mainfolder1,mainfolder2,mainfolder3}/subfolder1/book.txt > out$var