「整数表現が必要です」というメッセージが表示されるのはなぜですか?

「整数表現が必要です」というメッセージが表示されるのはなぜですか?

後で呼び出される小さな関数を作成しようとしています。

簡単にするために、12が2、3、4に分かれていることを確認したいと思います。

コードは次のとおりです

divisible_by () {
  under_test=12
  from=2
  to=4
  divisible=0
  for ((check=from; check<=to; check++)) {
    echo "check= $check"
    if [ $under_test % $check -ne 0 ]; then
      divisible=1
    fi  
  }
  return $divisible
}

x=divisible_by
if [ $x -eq 0 ]; then
  echo "true"
else
  echo "false"
fi

現在私は得る

./5_divisible_by_1_to_10.sh: line 16: [: 
divisible_by: integer expression expected
false

また、数値をパラメータとして渡すのは難しいことがわかりましたが、おそらく関連性があります。

ベストアンサー1

divisible_by () {
  under_test=12
  from=2
  to=4
  for ((check=from; check<=to; check++)) {
    echo "check=$check"
    ((under_test % check == 0)) || return
  }
  true
}

if divisible_by; then
  echo true
else
  echo false
fi

おすすめ記事