[완료] 변수에 저장된 값과 문자열 비교에 대해 궁금한점이 있습니다

nockol의 이미지

함수에서 read 명령으로 (변수에) 읽어들인 값과 문자열을 비교하고자 합니다.

예를 들어, 어떤 함수내부에서,

read a

if [ ${a} = "A" ];then
echo "is A"
fi

이와같이 비교를 하려고 하니, 에러가 납니다.

= 좌, 우를 공백없이 붙였을 경우, 에러는 나지 않지만, 비교 연산이 언제나 참으로 나오던데요,
read로 변수에 읽어들인 값은 비교 연산을 할 때 무언가 특별한 처리를 해줘야 하는지요?

drinkme의 이미지

= 가 아니라 ==를 써야 하지 않나요?

cyberbot의 이미지

if [ ${a} = "A" ];

->

if [ "${a}" = "A" ];

이렇게 바꿔주시면 됩니다.

FIFO의 이미지

이거 저도 몰라서 고생했던거라 궁금했는데... 그렇군요.
다음엔 긴히 활용하겠습니다.

nockol의 이미지

" " 로 묶어주니 비교는 잘 되는 것 같습니다.
헌데, 이상한점이 또 생겨버렸네요.

read 명령의 경우, 어떤 sh 파일에서 여러번 불려지면 좀 이상한 동작을 합니다.

마치, 내부적으로 포인터을 갖고있고 이것을 계속 증가하는 것같은 느낌...

A 함수에서 read, B 함수에서 read, 이후, 다시 A 함수에서 read 할 경우 좀 이상하게 읽어들입니다.

이게 왜 이런걸까요?