이 비교 결과가 같지 않은 이유는 무엇입니까?

이 비교 결과가 같지 않은 이유는 무엇입니까?

이것을 사실이라고 평가할 수 없는 것 같습니다

is_equal () {
  in="$1"
  if [[ "$in" == "385" ]]; then
    return 0
  else
    return 1
  fi
}
a= is_equal 385
if [[ "$a" ]]; then
  echo "equal"
else
  echo "NOT equal"
fi

$ ./equal_nums.sh 
NOT equal
$

답변1

함수에 종료 상태가 있지만 출력이 없습니다. 변수는 $a항상 비어 있으므로 [[ $a ]]테스트는 항상 "false"입니다.

당신은 이것을 원합니다 :

if is_equal 42; then ...

하지만 당신은 당신이 원하는 것이 이것이라고 생각합니다

is_equal 42                # don't capture the output
a=$?                       # but do grab the exit status
if [[ $a -eq 0 ]]; then ...

관련 정보