使用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中所有参数的函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 Javascript 中触发函数时是不是必须提供所有参数? [复制]