C-Shell: variável na variável

0

Eu quero o valor de variabe ${var}_err_num , mas não consigo.

#!/bin/csh -f

set list = "book bus apple"
foeach var $list
   set err_num
   *
   *
   @err_num = $err_num + 1
   set ${var}_err_num = $err_num
end

echo ""
echo "# Summary"
foeach var $list
   echo "$var error num : ${${var}_err_num}" ; # Error occured
end
    
por anyone 19.11.2018 / 11:32

1 resposta

1

De acordo com esta postagem do Stackoverflow , você precisa usar eval . Talvez:

#!/bin/csh -f
set list = "book bus apple"
set err_num = 0
foreach var ($list)
   @ err_num += 1 
   set ${var}_err_num = $err_num
end

echo ""
echo "# Summary"
foreach var ($list)
   eval echo \$var error num : \$${var}_err_num ; # Error occured
end

(corrigi alguns erros de sintaxe no script, como o erro de digitação em foreach e assim por diante).

A saída:

$ csh -f foo.csh

# Summary
book error num : 1
bus error num : 2
apple error num : 3
    
por 19.11.2018 / 15:04