, у меня возникает загадка tcsh, и я буду благодарен за любую помощь.
Когда я запускаю:
set faceAttenRuns = (09 13)
set run = $faceAttenRuns[1]
echo $run
Это возвращает: echo 09 . Здорово.
Но когда я бегу:
set runTypes = (sceneLoc faceAtten faceNorm)
set run = $runTypes[2]Runs[1]
Это возвращает: set: Нет совпадений . Не хорошо.
Как сделать так, чтобы $ runTypes [2] Runs [1] возвращал 09, чтобы 09 можно было присвоить переменной run ?
Спасибо!
Для выполнения операции необходимо создать промежуточную переменную:
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>"
set run = $faceAttenRuns[1]:q
<09>
Вот вариант без использования каких-либо промежуточных переменных:
#!/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>"