变量名包含一个变量

变量名包含一个变量

我正在尝试使用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";回声 ${!myvar};完毕

  • 使用表来存储/检索内容,而不是循环中的单独变量:

    miny[$event]=$(cut -f4 - ... )

进而

echo ${miny[$event]}

相关内容