我在 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 回答