如何将长文本放入 shell 中?

如何将长文本放入 shell 中?

例如

$ 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。通过两者的结合,我们可以将文件的内容传递到程序的参数中。

相关内容