使用bash中所有参数的函数? [复制]

Posted

技术标签:

【中文标题】使用bash中所有参数的函数? [复制]【英文标题】:Function that uses all arguments in bash? [duplicate] 【发布时间】:2020-11-19 00:45:53 【问题描述】:

我正在尝试像这样使用我的函数中的所有参数

function docker_run 
  docker run \
    -it --rm \
    --entrypoint "" \
    --volume "$(pwd):/$repo" \
    --workdir "/$repo" \
    alpine/git:v2.26.2 \
    "$*"


docker_run sh -c "git reset && git add --a && git status"

这给出了错误:

docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:346:启动容器进程导致“exec:“sh -c git reset && git add --a && git status”:在中找不到可执行文件$PATH":未知。

如果我删除 $* 周围的引号,错误是:

用法:git [--version] [--help] [-C ]...

*$ 是要使用的正确变量吗?理想情况下,我希望 docker_run 使用任何可能的参数组合

【问题讨论】:

"$*" 将单独的参数连接成一个以空格分隔的字符串。使用"$@" 保留单词边界。 【参考方案1】:

如果你想使用所有参数,你应该使用$@ 而不是$*$@ 的特殊之处在于它类似于数组,因此当您将其放在引号中时,它会扩展到所有参数。 $* 是一个用空格连接参数的字符串,因此它会合并为一个参数。

【讨论】:

以上是关于使用bash中所有参数的函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用参数制作 Bash 函数? [复制]

Bash 中的 $@ 是啥? [复制]

在 Javascript 中触发函数时是不是必须提供所有参数? [复制]

在 Linux 上使用 Bash 将所有输出重定向到文件? [复制]

bash 记录

如何将文件路径作为 bash 脚本中的参数传递给函数? [复制]