Bash:日付を配列キーとして使用すると、デフォルト値が大きすぎます。

Bash:日付を配列キーとして使用すると、デフォルト値が大きすぎます。

「10#」指定について読みましたが数値比較をしないので私の場合ではないようです。 Bashで連想配列を生成しようとしていますが、コードは今日(2021-02-08)までうまく機能します。

dailyData["$today"]="$todayData"

$todayはISO形式の日付であり、$todayDataは関係ありません。
エラーが発生します2021-02-08: value too great for base (error token is "08")

Bashがこの日付形式を、ランダムな文字列が操作を実行する数値(連想配列キー)と解釈するのはなぜですか?
「08」を辞書キーとして使用するにはどうすればよいですか?

ベストアンサー1

dailyData連想配列ではなくインデックス配列で自動生成されるからだ。からman bash

構文を使用して変数を割り当てると、インデックス配列が自動的に生成されますname[subscript]=value。下付き文字は、数値として評価する必要がある算術式として扱われます。

dailyData明示的に連想配列として宣言すると問題は消えます。

$ declare -A dailyData[2021-02-08]="$todayData"

$ declare -p dailyData
declare -A dailyData=([2021-02-08]="" )

おすすめ記事