【问题标题】:bash function that outputs all input parameters including quotes or backslashes输出所有输入参数(包括引号或反斜杠)的 bash 函数
【发布时间】:2016-08-05 12:42:13
【问题描述】:

在 OS X 上的 bash 中,我可以创建这样的函数:

function bla() { echo "$@"; }

现在当我这样做时:

bla foo bar

输出很明显:foo bar

当我执行bla "foo bar"bla foo\ bar 时,两种情况下的输出仍然是foo bar
不是"foo bar"foo\ bar

我明白为什么,但有没有办法让函数按指定完全输出所有参数?

【问题讨论】:

  • 试试bla '"foo bar"' 不确定是否需要反斜杠。
  • 引用在读取参数时被消耗,它们不是参数的一部分。
  • shell 不是这样工作的。
  • 您是否有特殊原因需要这种行为?
  • @RocketNuts 您可以使用trap DEBUG$BASH_COMMAND 准确地回显输入的内容。

标签: bash function parameters escaping


【解决方案1】:

我只在 Linux 上尝试过,但我想在 OS X 上也是一样。你必须用反斜杠转义所有特殊字符。所以你的函数是一样的,但是当你调用它时,你必须转义你想要回显的字符。

bla \"foo bar\"

bla foo\\ bar

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多