我有XML文件说app_config.xml。这包含以下行:
<conf>
<LOGFILENAME>seasonalitylog.$now.log</LOGFILENAME>
</conf>
我正在读一个脚本文件说test.sh
file_name=awk -F '</?LOGFILENAME>' $'{print $2}' app_config.xml
尝试使用eval命令:
eval echo awk -F '</?LOGFILENAME>' '{print $2}' app_config.xml
但它没有返回正确的结果。它返回空白。
请帮助我理解我错在哪里。 提前谢谢。
答案 0 :(得分:2)
你没有用那条线运行那个awk命令。
您正在分配&#34; awk&#34;到file
变量并尝试运行-F
命令。
您需要在$(....)
中包装awk命令。
file_name=$(awk -F '</?LOGFILENAME>' $'{print $2}' app_config.xml)
答案 1 :(得分:1)
对于XML解析,您可能希望使用xpath
:
$ xpath -q -e "/conf/LOGFILENAME/text()" app_config.xml
seasonalitylog.$now.log
或在变量中:
filename=$(xpath -q -e "/conf/LOGFILENAME/text()" app_config.xml)