输出所有输入参数(包括引号或反斜杠)的bash函数
在OS X上的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上也是一样。你必须用反斜杠转义所有特殊字符。所以你的函数是一样的,但是当你调
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