(stdin) 1: bc 사용시 구문 오류

(stdin) 1: bc 사용시 구문 오류

이 명령이 있는데 잘 작동합니다. 하지만 (standard_in) 1: 구문 오류가 표시되는데 식별 방법을 모르겠습니다.

participants=0
while IFS=, read -r id name nat sex date height weight sport gold silver bronze info; do
if [[ $(echo "$height>=0.1 && $height<=$2 && $weight>=0.1 && $weight<=$3" | bc) -eq 1 ]] ; then
let participants++
fi
echo -e $participants
done < $1

누군가 내 오류를 알아내도록 도와줄 수 있나요?

감사해요

답변1

변수( $height, $weight또는 ) 중 하나가 비어 있거나 $2유효한 $3숫자가 아닙니다.

$ echo "6>=5" | bc
1

# First operand is not a number
$ echo "6x>=5" | bc
(standard_in) 1: syntax error

# First operand is empty
$ echo ">=5" | bc
(standard_in) 1: syntax error

디버깅 목적으로 .그래서 어떤 변수에 유효 숫자가 포함되어 있지 않은지 확인할 수 있도록 echo실행하는 것이 좋습니다.bc

participants=0
while IFS=, read -r id name nat sex date height weight sport gold silver bronze info; do

  echo "\$height='$height' \$weight='$weight' \$2='$2' \$3='$3'"
  # Or:
  echo "Going echo the following to bc: $height>=0.1 && $height<=$2 && $weight>=0.1 && $weight<=$3"

  if [[ $(echo "$height>=0.1 && $height<=$2 && $weight>=0.1 && $weight<=$3" | bc) -eq 1 ]] ; then
    let participants++
  fi
  echo -e $participants
done < $1

관련 정보