例如
$ gcc -Wall abc.c
$ ./a.out <font name="Moronicity" size=12><!-- ignore this comment --><i></i>
<div style="aa">hello</div></font><img src="spacer.gif">
<div style="bb"><img src="spacer.gif"></div>
-bash:意外标记“<”附近出现语法错误
会不断收到此错误
答案1
如果您需要将该 HTML 文本作为范围到程序,那么您需要引用它以保护它免受 shell 的影响(shell 将小于号视为重定向等):
./a.out '<font name="Moronicity" size=12><!-- ignore this comment --><i></i>
<div style="aa">hello</div></font><img src="spacer.gif">
<div style="bb"><img src="spacer.gif"></div>'
如果您需要将 HTML 文本发送到程序输入(stdin),那么您可以将其引用为此处文档。我进一步缩进了第一行,以表明文本的其余部分均从第 1 列开始:
./a.out << 'EOF'
<font name="Moronicity" size=12><!-- ignore this comment --><i></i>
<div style="aa">hello</div></font><img src="spacer.gif">
<div style="bb"><img src="spacer.gif"></div>
EOF
周围的单引号EOF
防止文本中任何参数的扩展。
答案2
您可以在每个特殊字符(<
, [
, >
, ]
)之前使用转义字符,但在这种情况下这会非常麻烦。相反,您可以简单地用单引号将整个参数括起来,如下所示:
$ ./a.out '<font name="Moronicity" size=12><!-- ignore this comment --><i></i>
<div style="aa">hello</div></font><img src="spacer.gif">
<div style="bb"><img src="spacer.gif"></div>'
另一种选择是将参数字符串放置在
<font name="Moronicity" size=12><!-- ignore this comment --><i></i>
<div style="aa">hello</div></font><img src="spacer.gif">
<div style="bb"><img src="spacer.gif"></div>
到文件中(例如,params
)。这允许与命令结合调用您的函数cat
,该命令输出文件的内容:
$ ./a.out "$(cat params)"
请注意,$()
用于执行cat params
命令,双引号用于包含整个文件作为 的参数a.out
。通过两者的结合,我们可以将文件的内容传递到程序的参数中。