반달가면 이글루에서 백업 - 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"
예시를 보면 느낄 수 있겠지만, 스크립트를 작성하면서 따옴표에 따라 결과가 달라질 수 있고 은근히 혼동 되는 측면도 있다. 따옴표를 사용할 때 좀 애매하다 싶다면 간단한 문자열로 먼저 시험을 해 보고 의도한 대로 동작하는지 확인하는 것이 좋겠다.
'bash script' 카테고리의 다른 글
[bash: tr, sed] txt 파일에서 여러줄로 된 항목을 한줄로 바꾸기 - 2 (2) | 2023.04.13 |
---|---|
리눅스 bash 스크립트에서 배열(array) 사용하기 (0) | 2023.04.11 |
[bash: function] 함수를 이용한 동시 작업 - 2 (0) | 2023.04.11 |
[bash: grep] 특정 문자열 주변의 내용 출력하기 (0) | 2023.04.11 |
[bash: date] 두 날짜 사이의 시간차 구하기 (0) | 2023.04.11 |