このコマンドがありますが、うまくいきます。しかし、(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