【问题标题】:Open Quote expected for "ApplicationVersion" associated with an element type "ApplicationName"与元素类型“ApplicationName”相关联的“ApplicationVersion”预期的公开报价
【发布时间】:2021-05-17 20:35:02
【问题描述】:
echo "<Transaction><TypeofTrans>G5</TypeofTrans><Priority>7</Priority>
<ContentType>LIVE</ContentType><OrigAgency>generic</OrigAgency><DestAgency>generic</DestAgency>
<Sender><OperatorID>JOE</OperatorID><HostName>DESKTOP-5X</HostName><BPID>1</BPID>
<ApplicationName ApplicationVersion="SP1.1">TEW</ApplicationName></Sender>
<ID>$id</ID><Date>20210217</Date>" > "$xml_dir/$id.xml"    

    : > "$trigger_dir/$id.trigger"

我试图找出为什么“SP1.11”给我这个错误。

【问题讨论】:

  • 您必须转义一个双引号,该双引号应该包含在双引号字符串中。
  • 如果你查看文件的内容,你会看到类似&lt;ApplicationName ApplicationVersion=SP1.1&gt;;用于属性值的引号被 bash 视为语法。
  • @chepner 能否为我提供 echo statemenet 中双引号字符串的正确语法?

标签: java linux bash shell echo


【解决方案1】:

您需要对嵌套的双引号进行转义,以便将它们视为字符串中的文字字符,而不是过早关闭并重新打开字符串的引号部分。

echo "...<ApplicationName ApplicationVersion=\"SP1.1\">TEW</ApplicationName>..." > "$xml_dir/$id.xml"    

还有简单地切换引号的选项,因为引号不定义字符串;它们只是为字符串的一部分提供批量转义。

例如:

echo '<Transaction><TypeofTrans>G5</TypeofTrans><Priority>7</Priority><ContentType>LIVE</ContentType><OrigAgency>generic</OrigAgency><DestAgency>generic</DestAgency><Sender><OperatorID>JOE</OperatorID><HostName>DESKTOP-5X</HostName><BPID>1</BPID><ApplicationName ApplicationVersion="SP1.1">TEW</ApplicationName></Sender>'"<ID>$id</ID><Date>20210217</Date>" > "$xml_dir/$id.xml" 

大部分字符串都用单引号括起来,包括包含双引号的部分。只有最后需要参数扩展的部分使用双引号。

【讨论】:

    猜你喜欢
    • 2018-06-25
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    相关资源
    最近更新 更多