0

私はc-shellにファイル名を参照するいくつかの変数を持っています。これらの変数の名前は次のようになります。

$ T01aa2 $ T12aa2$T45aa2など。

それらは共通して「T」と「aa2」を持っています。

たとえば、ファイル名の場合と同じように、これらの変数をループにリストするにはどうすればよいですか。

私は次のようなことをしたいと思います:

foreach ii in($ T * aa2)dosomestuff.sh $ ii end

残念ながら、$ T*aa2はc-shell変数名には適用されません。

助けてくれてありがとう。

4

2 に答える 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 に答える