首页 > 解决方案 > 在 tox 中运行条件 bash 命令

问题描述

我正在尝试在 Tox 中运行条件 bash 命令。

如果用户将 'stag' 传递给脚本,tox 应该运行一个 curl 命令;如果他们将“prod”传递给脚本,它应该运行另一个 curl 命令。

[testenv]
ENV=$1
whitelist_externals=
    /bin/bash
deps=
    -rrequirements.txt
commands=
    bash -ec 'curl https://this_is_just_sample_test.com'
    pytest test/test.py

当我尝试向批处理命令引入条件时:

[testenv]
ENV=$1
whitelist_externals=
    /bin/bash
deps=
    -rrequirements.txt
commands=
    bash -ec 'if [$1 == "stag"]; then curl https://this_is_just_sample_test.com fi'
    pytest test/test.py

我收到以下错误消息:

错误:命令 '/bin/bash -ec if [$1 = "stag"] 的调用错误;然后 curl https://this_is_just_sample_test.com fi'(使用代码 2 退出)

标签: bashconditionaltox

解决方案


让我为您修复代码(我为[]命令添加了空格,将参数更改为$0并添加了分号):

[testenv]
whitelist_externals=
    /bin/bash
deps=
    -rrequirements.txt
commands=
    bash -ec 'if [ "$0" == "stag" ]; then curl https://this_is_just_sample_test.com; fi' {posargs}
    pytest test/test.py

{posargs}是允许从tox调用传递命令行参数的替换。像这样:

$ tox stag

推荐阅读