例如
$ 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>
Run Code Online (Sandbox Code Playgroud)
-bash:意外标记“<”附近的语法错误
会不断收到此错误
Jef*_*ler 11
如果您需要该 HTML 文本作为程序的参数,那么您需要引用它以保护它免受 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>'
Run Code Online (Sandbox Code Playgroud)
如果您需要将该 HTML 文本作为输入(stdin)发送到程序,则可以将其引用为 here-document。我进一步缩进了第一行,以表明文本的其余部分都从第 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
Run Code Online (Sandbox Code Playgroud)
周围的单引号EOF
可防止扩展文本中的任何参数。
您可以在每个特殊字符 ( <
, [
, >
, ]
)之前使用转义字符,但在这种情况下会非常麻烦。相反,您可以简单地用单引号将整个参数括起来,如下所示:
$ ./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>'
Run Code Online (Sandbox Code Playgroud)
另一种选择是放置参数字符串
<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>
Run Code Online (Sandbox Code Playgroud)
到一个文件中(例如,params
)。这允许结合cat
命令调用您的函数,该命令输出文件的内容:
$ ./a.out "$(cat params)"
Run Code Online (Sandbox Code Playgroud)
请注意,$()
用于执行cat params
命令,双引号用于包含整个文件作为 的参数a.out
。通过两者的结合,我们可以将文件的内容传递到您的程序的参数中。