【问题标题】:Function that uses all arguments in bash? [duplicate]使用bash中所有参数的函数? [复制]
【发布时间】: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 使用任何可能的参数组合

【问题讨论】:

  • "$*" 将单独的参数连接成一个以空格分隔的字符串。使用"$@" 保留单词边界。

标签: bash


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-08
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2019-07-07
    相关资源
    最近更新 更多