변수 번호는 문자열로 처리됩니까?

변수 번호는 문자열로 처리됩니까?

이것은 책(The Linux Command Line)에서 가져온 스크립트입니다.

#!/bin/bash
# trouble: script to demonstrate common errors
number=1
if [ $number = 1 ]; then
echo "Number is equal to 1."
else
echo "Number is not equal to 1."
fi

나는 이 표현이 헷갈린다.

$number = 1

[ 명령에서 = 연산자는 문자열을 비교하는 데 사용됩니다. 그렇죠? 아니면 거기서 무슨 일이 일어났나요?

문자열은 따옴표로 식별됩니까, 아니면 따옴표 없이 식별됩니까?

답변1

[ $number = 1 ]문자열 비교와 숫자 비교의 차이점은 [ $number -eq 1 ]동일성은 상황에 따라 다른 것을 의미한다는 것입니다. 예를 들어:

number="1"
if [ $number -eq 01 ]; then
  echo "true"
else
  echo "false"
fi

위의 코드는 숫자상으로 true, while 과 같은 코드 블록을 에코합니다 .011

number="1"
if [ $number = 01 ]; then
  echo "true"
else
  echo "false"
fi

false문자열이 01string 과 다르기 때문에 에코됩니다 1.

답변2

조건부 연산자에 대한 문서는 다음을 참조하세요.

관련 정보