728x90

쿼우팅(quoting)

ㄴ 문자열을 따옴표로 묶는것을 말합니다. 이렇게 하는 이유는 문자열안에 특수문자가 들어가 있을 경우,

쉘이나 쉘 스크립트에 의해 그 특수 문자가 재해석이나 확장되는것을 방지하기 위해서 입니다.

참고: 몇몇 프로그램이나 유틸리티들은 쿼우트된 문자열에 들어 있는 특수 문자를 재해석하거나 확장 시킬 수 있습니다. 이것은 쿼우팅의 중요한 사용법으로써 쉘이 명령어줄 매개변수를 해석하지 않고 프로그램이 해석해서 확장하도록 해 줍니다.

낱말 조각남(word splitting) [1] 을 피하려면 큰 따옴표를 쓰기 바랍니다. 이렇게 하면 인자에 공백문자가 들어 있어도 하나의 낱말로 인식하게 해 줍니다.

작은 따옴표(' ')도 큰 따옴표와 비슷하게 동작하지만 $의 특별한 의미를 꺼 버려서 변수 참조가 일어나지 않게 합니다. 작은 따옴표안의 '을 제외한 모든 특수 문자들은 단순히 문자 그대로 해석됩니다. 작은 따옴표("완전한 쿼우팅")를 큰 따옴표("부분 인용")보다 좀 더 엄격한 방법이라고 생각하면 됩니다.

참고: 작은 따옴표안에서는 이스케이프 문자(\)도 글자 그대로 인식되기 때문에 작은 따옴표로 묶인 문자열에 \을 써서 작은 따옴표 자체를 넣으려고 한다면 원하는 결과가 나오지 않습니다.

이스케이프(Escaping)는 하나의 문자를 쿼우팅하는 방법입니다. 어떤 문자 앞에 이스케이프 문자(\)가 오면 쉘에게 그 문자를 문자 그대로 해석하게 해 줍니다.

경고
echo sed같은 몇몇 명령어들에서는 이스케이핑이 특수 문자의 특수한 의미를 키도록 해 주는 반대의 효과를 가질 수도 있습니다.

\"

ㄴ 큰따옴표를 그냥 큰 따옴표로 해석

ex) echo "\"Hello\", he said."

 

 

\$

ㄴ 달러 표시를 그냥 달러 표시로 해석(\$ 뒤에 오는 변수는 참조되지 않습니다.)

ex) echo "\$variable01" # $variable01 이라고 찍힘

 

\\

ㄴ백슬래쉬를 그냥 백슬래쉬로 해석

 

이스케이프는 한 명령어를 여러줄에 걸쳐 쓸 수 있게도 해 줍니다. 보통은, 줄이 다르면 다른 명령어를 나타내지만 줄 끝에 이스케이프를 걸면 뉴라인 문자를 이스케이프시키기 때문에 그 다음줄이 원래 줄과 한 줄로 이어지게 됩니다.

참고: 줄이 파이프 문자인 |으로 끝난다면 굳이 이스케이프 문자(\)를 적어줄 필요가 없습니다. 하지만, 여러줄에 걸친 하나의 명령어에서 줄 끝에 항상 이스케이프 문자를 적어주는 것은 아주 좋은 프로그래밍 습관입니다.

728x90

'쉘스크립트' 카테고리의 다른 글

8~/ 9~/ 연산자, 변수 재검토  (0) 2022.03.03
7~ 테스트  (0) 2022.03.03
5. / # 변수와 매개변수 소개  (0) 2022.03.02
2.1~2.2 / 3. / 4. # 기초단계 종료상태 특수문자  (0) 2022.03.02
1-1~2 소개 , #!  (0) 2022.03.02

+ Recent posts