正しい結果を生成するための正しい表現は何ですか?

正しい結果を生成するための正しい表現は何ですか?

このスクリプトは CSV ファイルを受け取り、それを反復処理して MD 配列を作成します。次に、3 番目の列を受け取り、各変数を比較して、64 より大きいかどうかを判断します。数値 64 を使用すると機能しますが、宣言された MAX_AGE という名前の定数を使用すると機能しません。

以下は、-gt MAX_AGE を使用したスクリプトの画像です。 宣言された定数 MAX_AGE を持つスクリプト

以下は上記のスクリプトを使用した場合のエラーです ここに画像の説明を入力してください

答えはおそらく単純なものだと思いますが……。

答え1

-gt文字列ではなく数値の比較に使用されます。したがって、次の部分を置き換える必要があります。

[ ${ages[i]} -gt MAX_AGE ]

と:

[ ${ages[i]} -gt $MAX_AGE ]

その理由は、 がMAX_AGE文字列であるためです。数値として使用することはできません。

$MAX_AGEは変数の値ですMAX_AGE。その値が整数として解釈できる限り、数値と比較することができます。

を使用する場合、最良の結果を得るには[...]、変数を二重引用符で囲む必要があります。

[ "${ages[i]}" -gt "$MAX_AGE" ]

関連情報