Atribuindo / avaliando variáveis concatenadas no tcsh

0

Eu tenho um quebra-cabeça tcsh e gostaria de receber ajuda.

Quando eu corro:

set faceAttenRuns = (09 13)
set run = $faceAttenRuns[1]
echo $run

Isso retorna: echo 09 . Ótimo.

Mas quando eu corro:

set runTypes    = (sceneLoc faceAtten faceNorm)
set run = $runTypes[2]Runs[1]

Isso retorna: set: No Match . Nada bom.

Como posso fazer $ runTypes [2] Runs [1] retornar 09, para que 09 possa ser atribuído à variável run ?

Obrigado!

    
por cewelling 01.08.2017 / 16:20

1 resposta

0

Você precisa criar uma variável intermediária para executar a operação:

set faceAttenRuns = ( 09 13 )
set runTypes = ( sceneLoc faceAtten faceNorm )
set varname = "$runTypes[2]Runs"
echo "set run = "\$"${varname}[1]:q" # this will show you what is going to be evaluated
eval "set run = "\$"${varname}[1]:q"
echo "result=<$run>"

Resultado

set run = $faceAttenRuns[1]:q
<09>

Aqui está uma versão sem empregar quaisquer variáveis intermediárias:

#!/bin/csh -f

set faceAttenRuns = ( 09 13 )
set runTypes = ( sceneLoc faceAtten faceNorm )

echo "set run = "\$"{${runTypes[2]}Runs[1]:q}"
eval "set run = "\$"{${runTypes[2]}Runs[1]:q}"

echo "result=<$run>"
    
por 01.08.2017 / 17:19

Tags