我只需要将任何 HTML 内容作为命令行参数传递,其中包括诸如 '、"、` 之类的字符?我如何在 unix 中将其作为单个参数传递?
最佳答案
如果您在命令行输入,您可以使用以下技巧:
some_program -some_option some_argument "$(cat)"
any text you like with ` or " or $ or < or whatever
^D
最后是control-D(文件结尾)
要将其放入 bash 脚本中,您可以使用 Here 文档:
some_program -some_option some_argument "$(cat <<'EOF'
any text you like with ` or " or $ or < or whatever
EOF
)"
只要文本不完全是字符 EOF(如果是,您只需将两个地方的 EOF 都更改为其他字符),它就可以工作。
但我认为这些都不是您想要做的。我认为你正试图从另一个程序(在 Lua 中)调用一个程序。不幸的是,开箱即用的 Lua 不提供任何可以做到这一点的功能。它只提供os.execute,它使用shell(/bin/sh,不是bash)来解释命令行。
Mark Edgar 为 Lua 编写了一个很好的 spawn
实现,但我不知道它是否仍在维护。如果做不到这一点,您仍然可以使用第二个 hack:
require("os")
function call_with_arg(prog, rawtext)
return os.execute(prog.." \"$(cat <<'EOF'\n"..rawtext.."\nEOF\n)\"")
end
local html =
[=[<html><body><img src="image.png" onload='alert("loaded")'/></body></html>]=]
call_with_arg("echo >somefile.txt", html)
关于linux - 在 unix 中将多行、带引号的字符串作为单个命令行参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12576982/