nome da variável contém uma variável dentro dele [duplicado]

1

Estou tentando fazer eco de alguns valores usando um loop for .

hwEventType.txt contém isto:

11000
11002
11004
11006
13025
13026

Código:

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 é a data de hoje

arquivos G_2001_DCC_ErrorCode_STAT _ "$ event" _ "$ filedate1" .txt contém informações abaixo:

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

Eu quero fazer o seguinte:

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

Mas eu tenho linhas vazias.

Existe alguma maneira de usar uma variável contém em seu nome uma variável?

    
por ammar 07.02.2018 / 13:20

1 resposta

1

Para possíveis maneiras de conseguir isso:

  • usando um nome de variável intermediário:

    para o evento em $ (cat /path/hwEventType.txt); Faz   echo myvar="minx_ $ event_2001";   echo $ {! myvar}; feito

  • use uma tabela para armazenar / recuperar coisas em vez de variáveis separadas em seus loops:

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

e depois

echo ${miny[$event]}
    
por 07.02.2018 / 13:50