変数名に変数が含まれています。

変数名に変数が含まれています。

forループを使用していくつかの値をエコーし​​ようとしています。

hwEventType.txt以下が含まれます:

11000
11002
11004
11006
13025
13026

パスワード:

for event in $(cat /path/hwEventType.txt)
do
eval miny_"$event"_2001=`cut -f4 -d"|" /path/G_2001_DCC_ErrorCode_STAT_"$event"_"$filedate1".txt | sort -n | head -1`
done

filedate1今日の日付

G_2001_DCC_ErrorCode_STAT_"$event"_"$filedate1".txt ファイルには、次の情報が含まれています。

20180205 2356|2001|11000|24034
20180205 2357|2001|11000|24441
20180205 2358|2001|11000|25039
20180205 2359|2001|11000|24637
20180206 0000|2001|11000|24795
20180206 0001|2001|11000|23979
20180206 0002|2001|11000|24081
20180206 0003|2001|11000|24103
20180206 0004|2001|11000|23634
20180206 0005|2001|11000|23926

私は次のことをしたいと思います:

for event in $(cat /path/hwEventType.txt); do echo "$minx_$event_2001"; done

しかし、空の行があります。

名前に変数を含む変数を使用する方法はありますか?

答え1

これを達成するための可能な方法:

  • 中間変数名を使用します。

    $(cat /path/hwEventType.txt)のイベントのecho myvar = "minx_ $ event_2001";

  • ループ内の別の変数の代わりにテーブルを使用してコンテンツを保存/検索します。

    ミニ[$event]=$(cut -f4 - ... )

それから

echo ${miny[$event]}

関連情報