2

是否可以在 Bash 中禁用命令替换?
我想将包含多个反引号字符的字符串作为命令行参数传递给程序,而不用尾随反斜杠或引用字符串。
谢谢你。

4

1 回答 1

4

我认为您的问题存在误解。报价可能是解决您的情况的方法。但也许您还没有找到正确的引用方式或类似方式。

如果您的危险字符串在源代码中是逐字记录(不带引号或转义),您可以将其放在单独的文件中并从那里读取:

dangerous_string=$(cat dangerous_string_file.txt)

如果它应该在没有解释的情况下传递给命令,请使用双引号来防止解释:

my_command "$dangerous_string"

如果您必须将它传递给需要接收字符串的引用版本的命令,因为众所周知,它会不小心传递字符串而不使用双引号之类的东西来防止解释,您总是可以使用printf来获取引用版本:

quoted_dangerous_string=$(printf "%q" "$dangerous_string")
careless_command "$quoted_dangerous_string"

如果所有这些选项对您的情况没有帮助,请更详细地说明您的问题所在。

于 2013-10-24T08:40:32.877 回答