이 명령이 있는데 잘 작동합니다. 하지만 (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