私は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>"