[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






(표시 되는 메세지는 os에 따라 다릅니다 필자는 Centos8를 사용합니다.)

핵심은 '공백 문자가 들어가거나 빈 문자열일지 모른다.' 라는 것을 항상 염두 해 두어야 합니다 . 
공백 문자를 포함하던지 안 하던지 따옴표 처리를 해야합니다.