小编Har*_*tts的帖子

将“$@”放入破折号的局部变量中

我有一个 Bash 函数,它"$@"通过将其放入局部变量中来对整个参数进行一些字符串操作 ( ),如下所示:

my_func() {
    local args="$@"
    echo "args: <$args>"
}

my_func "$@"
Run Code Online (Sandbox Code Playgroud)

当我在 Bash 中运行它时,args包含传递的所有参数:

$ bash foo.sh foo bar baz
args: <foo bar baz>
Run Code Online (Sandbox Code Playgroud)

但是,如果我在 Dash 中运行它,则仅存储第一个参数:

$ dash test.sh foo bar baz
args: <foo>
Run Code Online (Sandbox Code Playgroud)

阅读Ubuntu Wiki 的“Dash as /bin/sh”页面中的部分local,似乎 Dash 正在local args="$@"像这样扩展该行:

$ bash foo.sh foo bar baz
args: <foo bar baz>
Run Code Online (Sandbox Code Playgroud)

因此只将“foo”放入并将和args声明为(本地?)变量。事实上,如果我在参数中添加并运行它,它似乎确认我正在添加变量:barbazecho "bar: $bar"my_func=

$ dash test.sh …
Run Code Online (Sandbox Code Playgroud)

dash shell-script

6
推荐指数
1
解决办法
1024
查看次数

标签 统计

dash ×1

shell-script ×1