글로브 / 분할
먼저 glob / split을 사용하겠습니다. @Stephane의 답변 은 일반적으로 그 용어를 사용하는 것입니다. 그것들은 실제 명령이 아니며 의사 작업 일뿐입니다.
은 split("$test")
요소의 "배열"에 "$ 테스트"까지의 내용을 나눌 것입니다.
는 glob(...)
다음과 같은 쉘 글 로빙 문자가 포함 이러한 요소의 확장을 돌볼 것 *
또는 범위를 [1-2]
.
예
우리의 끈 $test
이 다음과 같다고 가정하십시오 .
$ test="afile[1-2] afile[3-5]"
또한 파일이 들어있는 디렉토리가 있다고 가정 해 봅시다.
$ ls -1
afile1
afile2
afile3
afile4
afile5
이제 따옴표없이 에코를 시도하면 문자열이 공백으로 분할 된 다음 글러브 문자가 확장되었음을 알 수 있습니다.
$ echo $test
afile1 afile2 afile3 afile4 afile5
그러나 변수를 인수로 전달했을 때 변수를 인용 echo
하면 원래 리터럴 문자열을 얻습니다.
$ echo "$test"
afile[1-2] afile[3-5]
변수 확장
변수 확장이라는 용어는 쉘이 기본 작업의 일부로 수행하는 기본 작업을 포함합니다. 셸은 입력을 구문 분석 한 다음 구문 적으로 올바른 것으로 간주되면이 입력을 실행합니다.
이전 예에서 변수 $test
가 echo
인용되지 않은 상태 로 제시 되었을 때 우리는 쉘에게 계속해서 그 주장을 나누고 나서 그것을 붙잡 으라고 지시했습니다.
인용했을 때 큰 따옴표로 묶은 변수로 해당 기능을 비활성화했습니다.
예
다음은 globbing 및 splitting의 몇 가지 추가 예입니다.
glob / splitting은 자동으로 발생합니다
$ echo file{1..3}
file1 file2 file3
$ echo file{1..3} dir{a..b}
file1 file2 file3 dira dirb
$ echo dir{z..w} file{A..D}
dirz diry dirx dirw fileA fileB fileC fileD
$ echo dir{z..w} file{A..B} fileC
dirz diry dirx dirw fileA fileB fileC
큰 따옴표로 글롭 / 분할 비활성화
$ echo "dir{z..w} file{A..B} fileC"
dir{z..w} file{A..B} fileC
$ echo "dir{z..w} file{A..B}"
dir{z..w} file{A..B}