从 csh 中的文件评估环境变量
我有一个包含以下行的配置文件:
pre_args='$REGION','xyz',3
在 csh 脚本中使用 perl
我可以像这样评估环境变量 $REGION
:
set pre_args = `grep -v '^#' $config_file | grep pre_args | cut -f 2 -d = | sed 's/ //g'`
if ("$pre_args" != "") then
set pre_args = `echo $pre_args | perl -ne 'use Env; s/(\$\w+)/$1/eeg; print'`
endif
If $REGION = SOUTH
、$pre_args
现在设置为:SOUTH
、xyz
、3
。
有没有办法使用 shell 的内置命令来执行此操作,而不必依赖使用 perl
?顺便说一句,使用 csh
的选择不是我的,所以请不要回复批评这一点。谢谢。
I have a config file that contains the following line:
pre_args='$REGION','xyz',3
Using perl
from within a csh script I can evaluate environment variable $REGION
like so:
set pre_args = `grep -v '^#' $config_file | grep pre_args | cut -f 2 -d = | sed 's/ //g'`
if ("$pre_args" != "") then
set pre_args = `echo $pre_args | perl -ne 'use Env; s/(\$\w+)/$1/eeg; print'`
endif
If $REGION = SOUTH
, $pre_args
is now set to: SOUTH
,xyz
,3
.
Is there a way to do this using the shell's built-in commands and not having to rely on using perl
? By the way, the choice to use csh
is not mine, so please no replies criticizing that. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
eval
,它在当前 shell 的上下文中解析并执行其参数 - 像这样的东西可能会起作用:编辑: 好点 re。引号 - 想想它我很惊讶它竟然评估了变量。将 eval 与额外的 sed (以转义引号)结合起来似乎可以在这里工作,但它很难看:
给我
'SOUTH','xyz',3
You could use
eval
, which parses and executes its arguments in the context of the current shell - something like this may work:Edit: good point re. the quotes - thinking about it I'm surprised it evaluated the variable at all. Combining eval with an extra sed (to escape the quotes) seems to work here, but it's ugly:
gives me
'SOUTH','xyz',3