我有一个 tcsh 难题,希望得到任何帮助。
当我跑步时:
set faceAttenRuns = (09 13)
set run = $faceAttenRuns[1]
echo $run
这将返回:回声09。伟大的。
但是当我跑步时:
set runTypes = (sceneLoc faceAtten faceNorm)
set run = $runTypes[2]Runs[1]
这将返回:设置:不匹配。不是很好。
如何使 $runTypes[2]Runs[1] 返回 09,以便可以将 09 分配给变量跑步?
谢谢!
答案1
您需要创建一个中间变量来执行操作:
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>"