bash script2023. 4. 11. 13:40

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/545614

 

리눅스 bash 스크립트에서 사용하는 따옴표에 대한 두어가지 유의점을 간단하게 정리해 두기로.

큰 따옴표(")와 작은 따옴표(')는 기능이 약간 다르다. 큰 따옴표 안쪽의 내용은 shell에서 해석하는 반면에 작은 따옴표 안쪽의 내용은 문자열 그대로 받아들인다. 이것은 변수에 저장된 내용을 다룰 때 차이를 보일 수 있다. 아래의 예시를 보자.

a="hello"

# 변수 a의 값 출력
echo "$a"
hello

echo $a
hello

# 문자열 $a 출력
echo '$a'
$a

위의 예시에서 변수 a를 지정할 때 따옴표를 사용하지 않아도 무방해 보이긴 하는데, 변수에 저장된 문자열이 탭(tab)을 포함하고 있을 경우 따옴표가 없으면 출력할 때 탭이 사라지게 되므로 웬만하면 큰 따옴표를 써 주는 것이 좋겠다.

grep 명령에서도 비슷한 경우가 발생할 수 있다.

# echo 명령은 문자열 '$a' 출력, grep 명령은 변수 a에 저장된 문자열(hello) 검색. 일치하는 문자열 없음
echo '$a' | grep "$a"

# grep 명령에서 문자열 '$a' 검색. 문자열 일치
echo '$a' | grep '$a'
$a

즉, 변수를 지칭할 때는 큰 따옴표를 사용해야 한다. 만약 큰 따옴표를 사용하면서 변수값이 아니라 '$a' 문자열을 출력하고 싶다면 역슬래시(\)를 이용하자.

echo "\$a"
$a
 
따옴표 자체를 출력해야 할 때도 역슬래시를 이용하면 된다. 아래의 예시를 보자.

echo "abc"
abc

echo "'abc'"
'abc'

echo "\"abc\""
"abc"

예시를 보면 느낄 수 있겠지만, 스크립트를 작성하면서 따옴표에 따라 결과가 달라질 수 있고 은근히 혼동 되는 측면도 있다. 따옴표를 사용할 때 좀 애매하다 싶다면 간단한 문자열로 먼저 시험을 해 보고 의도한 대로 동작하는지 확인하는 것이 좋겠다.

 

 

728x90
Posted by 반달가면