나는 tcsh에 어려움을 겪고 있으며 도움을 주시면 감사하겠습니다.
내가 실행할 때 :
set faceAttenRuns = (09 13)
set run = $faceAttenRuns[1]
echo $run
그러면 다음이 반환됩니다.에코 09. 엄청난.
하지만 내가 실행할 때 :
set runTypes = (sceneLoc faceAtten faceNorm)
set run = $runTypes[2]Runs[1]
그러면 다음이 반환됩니다.설정: 일치하지 않음. 아주 좋은하지.
09가 변수에 할당될 수 있도록 $runTypes[2]Runs[1]이 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>"