我正在编写一个bash脚本,并且有一些我希望传递给awk调用的变量。终端响应msg“awk:第1行:语法错误在或附近<”我有另一个变量类似于这一个,我不确定失败这个失败,另一个是好的
以下是失败的变量:
helpInsert="\
\t<help name=\"vsss.status\"><![CDATA[Displays the active configuration.]]></help>\n\
\t<help name=\"vsss.general\"><![CDATA[Allows configuration of general video server parameters. <br />\n\
\t\tPressing restore defaults will reset the working configuration, but will not affect the active configuration. <br />\n\
\t\tPressing activate will make your working configuration into the active configuration. ]]></help>\n\
\t<help name=\"vsss.conf2\"><![CDATA[Allows editing of the working configuration. <br />\n\
\t\tSettings are not saved unless submit button is pressed]]></help>\
"
这是一个传递的变量样本,其余类似:
menuInsert="\
\t<subpageLvl1>\n\
\t\t<name>VSSS</name>\n\
\t\t<php></php>\n\
\t\t<login>0</login>\n\
\t\t<subpagesLvl2>\n\
\t\t\t<subpageLvl2>\n\
\t\t\t\t<name>Status</name>\n\
\t\t\t\t<php>vsss.status</php>\n\
\t\t\t\t<xml>vsss.xml</xml>\n\
\t\t\t\t<xsd>vsss.xsd</xsd>\n\
\t\t\t\t<login>0</login>\n\
\t\t\t</subpageLvl2>\n\
\t</subpageLvl1>\
"
这是电话:
awk -v appName=$appName -v insert=$helpInsert 'awk script here' filename
我知道问题在于变量而不是awk脚本。我可能在某个地方错过了逃跑,但我似乎无法找到一个。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
您需要使用双引号来保护变量不被shell扩展:
awk -v appName="$appName" -v insert="$helpInsert" 'awk script here' filename