"$@"
我有一个 Bash 函数,它通过将它放在一个局部变量中,对其参数作为一个整体 () 进行一些字符串操作,如下所示:
#!/bin/sh
my_func() {
local args="$@"
echo "args: <$args>"
}
my_func "$@"
当我在 Bash 中运行它时,args
包含所有传递的参数:
$ bash foo.sh foo bar baz
foo bar baz
但是,如果我在 Dash 中运行它,则只存储第一个参数:
$ dash test.sh foo bar baz
args: <foo>
阅读Ubuntu Wiki 的“Dash as /bin/sh”页面中的部分local
,似乎 Dash 正在local args="$@"
像这样扩展该行:
local args=foo bar baz
因此仅将“foo”放入并将args
其声明为(本地?)变量。事实上,如果我在参数中添加并运行它,似乎可以确认我正在添加变量:bar
baz
echo "bar: $bar"
my_func
=
$ foo.sh foo bar=baz
args: <foo>
bar: baz
综上所述,有没有办法$args
在 Dash 中获得类似 Bash 的行为(包含“foo bar baz”)?