私はc-shellにファイル名を参照するいくつかの変数を持っています。これらの変数の名前は次のようになります。
$ T01aa2 $ T12aa2$T45aa2など。
それらは共通して「T」と「aa2」を持っています。
たとえば、ファイル名の場合と同じように、これらの変数をループにリストするにはどうすればよいですか。
私は次のようなことをしたいと思います:
foreach ii in($ T * aa2)dosomestuff.sh $ ii end
残念ながら、$ T*aa2はc-shell変数名には適用されません。
助けてくれてありがとう。
質問する
39 次
2 に答える
1
変数名はファイル名とは大きく異なります。あなたがやろうとしていることは何でもするためのより良い方法がほぼ確実にあります。
しかし、もしあなたがそれをしなければならないなら、あなたができる最善のことはset | grep
(またはawk
またはsed
または何でも)そして多分何かで何かeval
です。このようなもの:
set vars=(`set | awk '$1 ~ /^T.*aa2$/ {print $1}'`)
foreach var ( $vars:q )
eval 'dosomestuff "$'"$var"'"'
end
値をset
直接取得してスキップeval
できる場合もありますが、値にスペースが含まれている場合は注意が必要です。
于 2012-11-15T22:14:01.730 に答える
0
csh の大ファンではありませんが、$ 記号をエスケープしようとしましたか? 「$」を「\$」に置き換えるということですか?
于 2012-11-15T22:05:36.803 に答える