我正在尝试使用awk解析输入xml文件(如下所示)以获取用户,密码和连接实例。我试图在shell上导出这些值,以便我可以在我的脚本中使用它们。 print显示正确的命令,但不知何故系统没有导出它。 我在Linux KSH上。
输入文件
> cat aa.xml
<Parameters>
<Parameter Name="USER" Value="DB9"/>
<Parameter Name="PASSWORD" Value="DB9"/>
<Parameter Name="INSTANCE" Value="P1"/>
</Parameters>
代码:
> awk -F '\"' '/<Parameter Name/,//{ cmd="export " $(NF-3) "=" $(NF-1); system(cmd); print cmd}' aa.xml
export USER=DB9
export PASSWORD=DB9
export INSTANCE=P1
> echo $PASSWORD
答案 0 :(得分:1)
system(...)
将在awk
进程的子进程中执行,所以无论你做什么都不会影响父进程 - 你的shell。你可以这样做:
. <(awk -F '\"' '/<Parameter Name/,//{ print "export " $(NF-3) "=" $(NF-1) }' aa.xml)
即source
awk
的输出,有效地在当前shell中运行export
命令。