【问题标题】:Use output from a command in another command在另一个命令中使用命令的输出
【发布时间】:2020-07-20 13:49:48
【问题描述】:

我有一个 tox 环境,我想在其中运行 {posargs} 上的 bash 命令(基本名称)并在后续命令中使用结果。我已经尝试了在 bash 中可以做到这一点的各种方法,但它们一直没有奏效。这个 sn-p 抓住了我想要完成的精神。

[testenv:docs]
commands =
    export PACKAGE=$(basename {posargs})
    ls $PACKAGE

【问题讨论】:

  • 不适用于环境变量:tox 在新 shell 中运行每个命令,因此当第一个命令完成时,环境变量会消失。您必须将其保存在永久存储中的某个位置,例如文件。或者完全改变方法,比如传递预处理的{posargs},并在管道中的所有命令中使用它们。
  • 我尝试的另一件事是 ls $(basename {posagrs}) 但这也不起作用,因为 tox 并不真正使用外壳。

标签: tox


【解决方案1】:

这不会按原样工作。仅仅是因为上面说的phd。唯一的一种方法是通过文件输出。不过..

你可以做的是:

tox.ini

[testenv:docs]
passenv =
    PACKAGE
whitelist_externals =
    ls
commands =
    ls {env:PACKAGE}

在任何脚本运行 tox..

export PACKAGE=$(basename {posargs})
tox
  • 这利用了toxvariable substitution
  • passenv 配置选项允许 PACKAGE 环境变量被传递(存在)到tox
  • whitelist_externals 部分启用未由 tox 安装的命令 (ls)(基本上在其环境之外)。

【讨论】:

    猜你喜欢
    • 2015-08-18
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多