결과

결과

나는 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>"

관련 정보