【问题标题】:What does "${PWD##*/}" mean in a Github Action for Docker?Docker 的 Github Action 中的“${PWD##*/}”是什么意思?
【发布时间】:2019-12-17 23:37:08
【问题描述】:

我正在使用这个 repo 运行 Airflow 图像,并在 Github workflow 中注意到这些行:

      - run: docker build -t "${PWD##*/}" .
      - run: docker run "${PWD##*/}" python -V
      - run: docker run "${PWD##*/}" version

我知道docker run 接受[OPTIONS] IMAGE [COMMAND] [ARG...] 形式的参数,所以我知道图像是由"${PWD##*/}" 确定的,但我不确定这实际上在做什么。

我认为它可能是 Github Actions 的 YAML 规范的一部分,但我无法在 documentation 中找到匹配项。查看docker run 的文档后,我不确定下一步该去哪里。

"${PWD##*/}" 表示什么?

【问题讨论】:

    标签: docker yaml airflow


    【解决方案1】:

    它不是特定于 docker 或 github,而是 shell。

    https://www.tldp.org/LDP/abs/html/string-manipulation.html

    ${string##substring}

    从 $string 前面删除 $substring 的最长匹配项。

    所以代码"${PWD##*/}" 删除了直到(包括)$PWD 中最后一个斜杠的所有内容,因此它获取的目录名称不包含整个路径。

    另一种可能是:

    "$(basename $PWD)"
    

    【讨论】:

    • 这是有道理的,我从你的回答中的理解是它需要 pwd 的结果,例如/foo/bar/boo 并返回 boo
    猜你喜欢
    • 2011-09-25
    • 2015-08-04
    • 2012-07-26
    • 2018-12-17
    • 1970-01-01
    • 2013-10-08
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多