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(或awksed或其他)和也许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 回答