如何使XML脚本识别手动设置的$WORK_DIR环境变量?
问题描述
我有如下XML脚本:
<?xml version="1.0" encoding="UTF-8"?> <attributes> <attribute name="priority" type="string"/> <attribute name="hierarchy" type="script" path="$WORK_DIR/pvim2vmgr/python_script/hierarchy.py"> <scriptParam name="subject"/> <scriptParam name="test_plan"/> </attribute> </attributes>
我在xterm中执行命令setenv WORK_DIR <my_path>设置环境变量,期望XML脚本中的$WORK_DIR能识别我指定的目录,但实际无法生效,请问是否有命令可实现该需求?
XML脚本用途
该脚本用于从特定网站获取信息并生成CSV文件,通过命令行参数运行。
替换工作目录的原因
当我使用他人的工作目录生成该XML脚本时,$WORK_DIR会被自动替换为他人的路径,而非我自己的路径。
解决方法
用sed手动替换
直接修改XML文件中的变量为你的实际路径,执行命令:sed "s|\$WORK_DIR|<my_path>|g" 你的脚本文件名.xml > 修改后的脚本文件名.xml之后使用修改后的XML文件执行任务即可。
用envsubst自动替换环境变量
如果你的系统安装了envsubst(一般属于gettext工具包),可以直接利用它将XML中的环境变量替换为当前shell的实际值,前提是已经用setenv WORK_DIR <my_path>设置好变量:envsubst < 你的脚本文件名.xml > 修改后的脚本文件名.xml这个命令会自动识别并替换XML中所有的环境变量引用。
检查程序是否支持环境变量解析
如果运行这个XML脚本的程序本身支持解析XML内的环境变量,那确认setenv WORK_DIR <my_path>执行后,变量已经正确导出(csh/tcsh下setenv默认会导出变量到子进程),然后直接运行程序即可。如果程序不支持,就用前两种方法手动替换。
内容的提问来源于stack exchange,提问作者YOONG JENG
相关产品推荐
相关产品推荐

