이것은 책(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 과 같은 코드 블록을 에코합니다 .01
1
number="1"
if [ $number = 01 ]; then
echo "true"
else
echo "false"
fi
false
문자열이 01
string 과 다르기 때문에 에코됩니다 1
.
답변2
조건부 연산자에 대한 문서는 다음을 참조하세요.
- Bash 조건식
- 이것
test
주문하다 (일명[ ... ]
) - 그리고
[[ ... ]]
조건부 구조