- 출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: echo
키워드: 문자열, 큰따옴표, 작은따옴표
사용처: 작은따옴표로 둘러싼 문자열 안에서 변수 확장이나 작은따옴표 기호를 사용하고 싶을 때
실행예제
$ ./single-quote.sh
It costs $100? I can't believe it!
스크립트
#!/bin/sh
price=100
str='It costs $'$price'? I can'\''t believe it!' #----- 1
해설
이 스크립트는 셸 변수 str 내용을 echo 명령어로 표시합니다. 변수 str에 대입할 때 문자열 전체를 작은따옴표로 둘러싸고 있는데 거기에 셸 변수 price 확장이나 작은따옴표 기호 자체를 다루는 예제입니다.
셸 스크립트로 문자열을 다룰 때 큰따옴표와 작은따옴표를 사용합니다. 기본적인 문법이지만 헛갈리기 쉬우므로 기본적인 부분을 다시 확인해 봅니다.
큰따옴표로 둘러싼 문자열은 변수 확장과 명렁어 치환을 하기 때문에 $와 `(그레이브)는 따옴표 안에서도 변수 확장과 명렁어 치환 의미를 그대로 가집니다. 한편, 작은따옴표 기호는 단순한 따옴표로 변수 확장 등을 전혀 하지 않은 채 ‘(작은따옴표) 이외의 기호를 전부 그대로 출력합니다.
-
작은따옴표라면 확장/치환을 하지 않음
$ echo "My Terminal : $TERM" My Terminal : xterm $ echo 'My Terminal : $TERM' My Terminal : $TERM
그럼 큰따옴표 안에서 큰따옴표를 쓰려면 \ 기호로 큰따옴표를 이스케이프합니다.
str="He said \"Hello!\". I said \"Hello\"."
echo $str
하지만 큰따옴표가 많은 문자열이라면 매번 이스케이프하는 것도 힘듭니다. 그럴 때는 다음처럼 작은따옴표로 처리하면 편리합니다.
str='He said "Hello!". I said "Hello".'
echo $str
그러나 작은따옴표 안에서는 변수 확장이 되지 않습니다. 이 예제는 ‘큰따옴표가 많이 등장하므로 작은따옴표로 문자열을 다루고 싶지만 변수를 확장하거나 작은따옴표를 쓰고 싶을 때’ 사용하면 됩니다.
작은따옴표를 쓰면서 변수를 확장하는 1
에서는 ‘It costs $’로 우선 작은따옴표를 끊습니다. 그 다음에 $price는 작은따옴표 밖이므로 변수 확장됩니다. 이어서 다시 작은따옴표를 열고 문자열을 연결합니다. 또한, 작은따옴표를 그대로 출력하기 위해 1
에서 ‘'‘라고 작성합니다. 이것은 우선 작은따옴표를 닫고 '로 작은따옴표 기호 자체를 표시한 다음 작은따옴표를 연다는 의미입니다.
이렇게 하면 작은따옴표 안에서도 변수 확장이나 작은다옴표 기호를 다룰 수 있습니다.