シェルスクリプトでの「integer expression expected」エラーの解決方法


  1. 整数式の不足: エラーメッセージが示すように、シェルスクリプトで整数式が期待されていますが、実際には整数式が不足している可能性があります。シェルスクリプトを確認し、整数式が必要な箇所で正しく指定されているか確認してください。

例:

if [ $var -eq 10 ]; then
  # コードの処理
fi

上記の例では、変数 $var の値が整数であることを確認しています。

  1. 文字列が整数に変換できない: シェルスクリプトで文字列を整数として使用しようとした場合、文字列が整数に変換できないというエラーが発生します。文字列が整数に変換可能かどうかを確認し、必要に応じて変換を行ってください。

例:

num="123"
if [ $num -gt 100 ]; then
  # コードの処理
fi

上記の例では、変数 num の値が整数に変換可能であることを確認しています。

  1. 数値演算子の誤り: シェルスクリプトで数値演算子(+-*/など)を使用する際に、誤った演算子が指定されている場合にもエラーが発生します。数値演算子を正しく使用しているか確認し、必要に応じて修正してください。

例:

result=$(($num1 + $num2))

上記の例では、変数 $num1$num2 の値を足し合わせて、結果を変数 result に代入しています。

  1. 変数の宣言や代入の欠落: シェルスクリプト内で使用する変数が宣言されていない場合や、代入されていない場合にも同様のエラーが発生します。必要な変数の宣言や代入が行われているか確認し、必要に応じて修正してください。

例:

num=10

上記の例では、変数 num に値 10 を代入しています。

以上が、「integer expression expected」エラーの原因と解決策のいくつかです。シェルスクリプトをデバッグする際には、エラーメッセージやコードの該当部分を注意深く確認することが重要です。