我在c-shell中有一些引用文件名的变量。那些 变量的命名如下:
$ T01aa2 $ T12aa2 $ T45aa2等。
他们的共同点是“T”和“aa2”。
如何在循环中列出这些变量,例如我会这样做 它们是文件名:
我想做点什么:
foreach ii in($ T * aa2)dosomestuff.sh $ ii end
不幸的是,$ T * aa2不适用于c-shell变量名。
感谢您的帮助。
答案 0 :(得分: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
,但如果值可能包含空格,则可能会变得棘手。
答案 1 :(得分:0)
不是csh的忠实粉丝,但你是否尝试逃避$ sign? 我的意思是用“\ $”代替“$”?