[Shell Script] 문장 속 공백 문자를 포함한 문자열 변수를 인수로 쓰기
문장 속 공백 문자를 포함한 문자열 변수를 인수로 쓰기
공백 문자를 포함한 문자열을 한 문장으로 다루고 싶을 때 사용합니다 .
#!/bin/sh
result="invalid value"
if [ "$result" = "invalid value" ]; then #1
echo "ERROR:$result" 1>&2
exit 1
fi
해설
이 스크립트는 공백 문자를 포함한 문자열을 if문으로 비교하여 값이 "invalid value" 라는 문자열일 때 에러를 출력합니다 . 공백을 포함한 문자열 취급이 핵심입니다 .
#1에서 변수 result가 공백 문자를 포함하므로 이것을 따옴표로 묶어 "$result" 처럼 처리 합니다.
따옴표를 하지 않은 채 작성을 하면 인수가 너무 많다는 에러가 발생합니다 .
다음과 같이 등호 기호의 왼쪽에 인수가 두 개가 있다고 해석하기 때문입니다 .
if [ invalid value = "invalid value"] ; then
또한 result가 비어 있다면 다음과 같이 해석 됩니다 .
if [ = "invalid value' ] ; then
핵심은 '공백 문자가 들어가거나 빈 문자열일지 모른다.' 라는 것을 항상 염두 해 두어야 합니다 .
공백 문자를 포함하던지 안 하던지 따옴표 처리를 해야합니다.