输出所有输入参数(包括引号或反斜杠)的bash函数

输出所有输入参数(包括引号或反斜杠)的bash函数,bash,function,parameters,escaping,Bash,Function,Parameters,Escaping,在OS X上的bash中,我可以创建如下函数: function bla() { echo "$@"; } 现在当我这样做的时候: bla foo bar 输出为对象:foo-bar 当我执行bla“foo bar”或bla foo\bar时,在这两种情况下,输出仍然是foo bar 不是“foo-bar”或foo\bar 我明白为什么,但有没有办法让函数输出所有指定的参数?我只在Linux上尝试过,但我想在OS X上也是一样。你必须用反斜杠转义所有特殊字符。所以你的函数是一样的,但是当你调

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

function bla() { echo "$@"; }
现在当我这样做的时候:

bla foo bar
输出为对象:
foo-bar

当我执行
bla“foo bar”
bla foo\bar
时,在这两种情况下,输出仍然是
foo bar

不是
“foo-bar”
foo\bar


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

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

bla \"foo bar\"


希望有帮助。

尝试
bla'foo bar'
不确定是否需要反斜杠。读取参数时使用引号,它们不是参数的一部分。shell不是这样工作的。您想要这种行为有什么特别的原因吗?@RocketNuts您可以使用
trap DEBUG
$BASH_COMMAND
准确地回显键入的内容。
bla foo\\ bar