我正在尝试使用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]}