Bash 쉘의 단일 및 이중 인용의 차이점은 무엇입니까?
텍스트를 따옴표로 묶는 것은 명령 줄에서 상당히 표준적인 방법이며 특히 이름에 공백이있는 파일을 다루는 경우에는 큰 따옴표로 묶을 지 어떻게 알 수 있습니까? 차이점을 살펴 보겠습니다. 한 쪽과 다른 쪽을 사용해야 할 때.
일반적으로 큰 따옴표는 따옴표 내에서 변수를 확장 할 수 있으며 작은 따옴표는 따옴표 안에 포함되지 않습니다. 계속 읽으세요.
간단한 텍스트로 인용
단순히 몇 마디의 텍스트를 감싸고 있다면 실제로 사용하는 것은 중요하지 않습니다. 둘 다 똑같이 작동하기 때문입니다. 예를 들어,이 두 명령은 모두 Test Directory라는 디렉토리를 만듭니다.
mkdir "테스트 디렉토리"
mkdir '테스트 디렉토리'
숙련 된 유형은 아마도 원한다면 mkdir Test \ Directory를 사용할 수도 있음을 알 수 있습니다.
셸 변수 확장
명령 줄에서 변수를 처리 할 때 작은 따옴표와 큰 따옴표 사이의 차이가 더 중요해진다. 기본적으로 bash는 $ test와 같은 변수를 전체 문자열로 확장합니다. 먼저 변수를 할당합니다.
test = "이것은 테스트입니다"
이제이 변수를 명령 줄에서 사용할 수 있습니다. 이렇게하면 간단히 출력해야합니다. 이것은 시험이다. 콘솔에
echo $ test
이중 따옴표와 작은 따옴표의 차이점이 더 명확 해집니다. 작은 따옴표를 사용하면 변수가 확장되지 않습니다. 예를 들어, 다음 명령을 실행하면 :
echo '$ test'
작은 따옴표를 사용하면 명령 줄에 '$ test'가 표시되지만 따옴표를 사용하면 제대로 출력됩니다.
명령 행에서 '문자를 사용하여 명령을 확장 할 때도 똑같은 기능이 작동합니다. 예를 들어, pwd 다른 커맨드 내에서 커맨드 - 당신은 커맨드를 사용하여 쉘에게 그것을 확장하도록 말할 것입니다 :
에코 'pwd'/ 테스트
홈 폴더에 있다면 다음과 같은 결과를 볼 수 있습니다 :
/ home / geek / test
예를 들어, 경로에 공백이있는 폴더에 있고 ln 명령을 사용하여 현재 디렉토리의 파일에 대한 기호 링크를 작성하려고한다고 가정 해보십시오. 일반적으로 ln 명령을 사용할 때는 전체 경로를 지정해야하므로 타이핑을 저장하는 데 'pwd'를 사용하는 것이 훨씬 쉽습니다..
따옴표로 묶지 않고 명령을 사용하려고하면 어떻게되는지보십시오.
ln -s 'pwd'/ test / home / geek / linkedname
대신 따옴표로 묶어야합니다.
ln -s " 'pwd'/ filename"/ some / other / path
보다 구체적인 예를 들어,이 예와 같이 모든 파일 이름에 공백이있는 폴더 구조가 있다고 가정 해 보겠습니다.
unzip 명령은 모든 파일에 대해 *를 사용하여 실행하는 것을 지원하지 않으므로 대신 for 명령을 사용해야합니다. 흥미로운 부분은 다음과 같습니다.
f in * .zip; 압축 해제 $ f; 완료
죄송합니다. 작동하지 않는 것 같습니다..
대신 우리가해야 할 일은 다음과 같이 $ f 변수 주위에 큰 따옴표를 사용하는 것입니다.
* .zip에서 f를 위해, "$ f"를 압축 해제하십시오; done
이제 for 명령이 루프를 통과 할 때마다 실제로 다음 명령을 실행합니다.
압축을 풉니 다. "테스트 1.zip"
물론 루프를 통해 디렉토리의 모든 파일에 대해 비슷한 명령을 실행합니다..
복습 해보자
이제 예제를 살펴 보았으므로 놓친 경우를 대비하여 곧 검토 할 것입니다.
큰 따옴표
- 변수를 묶거나 문자열 내에서 쉘 확장을 사용하려는 경우에 사용하십시오..
- 모든 문자는 $ 또는 '를 제외한 일반 문자로 해석되어 쉘에서 확장됩니다.
작은 따옴표
- 작은 따옴표 안에있는 모든 문자는 문자열 문자로 해석됩니다..
따라서 따옴표의 교훈은 끝납니다. 그들을 현명하게 사용하십시오..