在命令参数中注入bash条件

在命令参数中注入bash条件,bash,shell,sh,Bash,Shell,Sh,我想执行一个命令,将逻辑操作的结果作为参数注入。 基本上,条件充当三元运算符$VAR?40:30,结果设置为参数 当$VAR为“true”时,需要执行以下命令: pytest-cov在=40以下失效 我试过类似的东西 pytest-cov在=${[$VAR='true']]和&40 | | 80}测试下失败/ 但是我得到了一个错误的替换bash有一个三元运算符,但它只能用于算术表达式,所以在比较字符串时不能使用它 您需要设置一个变量,然后替换它 if [[ $VAR = true ]] then

我想执行一个命令,将逻辑操作的结果作为参数注入。 基本上,条件充当三元运算符$VAR?40:30,结果设置为参数

当$VAR为“true”时,需要执行以下命令: pytest-cov在=40以下失效

我试过类似的东西

pytest-cov在=${[$VAR='true']]和&40 | | 80}测试下失败/

但是我得到了一个错误的替换

bash有一个三元运算符,但它只能用于算术表达式,所以在比较字符串时不能使用它

您需要设置一个变量,然后替换它

if [[ $VAR = true ]]
then fail_under=40
else fail_under=80
fi
pytest --cov-fail-under="$fail_under" tests/
bash有一个三元运算符,但它只能在算术表达式中使用,所以在比较字符串时不能使用它

您需要设置一个变量,然后替换它

if [[ $VAR = true ]]
then fail_under=40
else fail_under=80
fi
pytest --cov-fail-under="$fail_under" tests/

您可以输出值

pytest --cov-fail-under=$(if [[ $VAR = 'true' ]]; then echo 40; else echo 80; fi) tests/

您可以输出值

pytest --cov-fail-under=$(if [[ $VAR = 'true' ]]; then echo 40; else echo 80; fi) tests/
您还可以扩展pytest并自定义cov_fail_under值的设置。在项目或测试根目录中创建具有以下内容的conftest.py文件:

导入操作系统 导入pytest @pytest.hookimpltryfirst=True def pytest_配置配置: cov_plugin=config.pluginmanager.get_plugin_cov var=os.environ.getVAR,无 允许用户通过在=x下传递“-cov fail”来覆盖命令行中的值` 如果cov_plugin不是None,并且下面的config.option.cov_fail_是None: 如果var==true,则值=40,否则为30 cov_plugin.options.cov_fail_under=value 现在正在运行

$ export VAR=true
$ pytest --cov=stuff
将在=40下自动应用cov\u fail\u,而在VAR unset或VAR=false下运行时,将使用30作为默认值。要用x覆盖该值,请显式传递-cov fail-under=x。

您还可以扩展pytest并自定义cov\u fail\u under值的设置。在项目或测试根目录中创建具有以下内容的conftest.py文件:

导入操作系统 导入pytest @pytest.hookimpltryfirst=True def pytest_配置配置: cov_plugin=config.pluginmanager.get_plugin_cov var=os.environ.getVAR,无 允许用户通过在=x下传递“-cov fail”来覆盖命令行中的值` 如果cov_plugin不是None,并且下面的config.option.cov_fail_是None: 如果var==true,则值=40,否则为30 cov_plugin.options.cov_fail_under=value 现在正在运行

$ export VAR=true
$ pytest --cov=stuff

将在=40下自动应用cov\u fail\u,而在VAR unset或VAR=false下运行时,将使用30作为默认值。要用x覆盖该值,请在=x下显式传递-cov fail。

bash代码段存在两个问题:

第一个问题:${}是用于指定变量名的语法。换句话说,${something}===$something

第二个问题:&&和| |后面必须跟一个命令。[[$VAR='true']&&40表示如果$VAR为'true',则执行命令40

所以你的台词应该是这样的:

pytest-cov在=$[[$VAR='true']]和&echo 40 | | echo 80测试下失败/ bash中的三元运算符仅在数值范围内工作,并且仅适用于数值


而且,这与pytest本身无关;我正在删除该标记。

您的bash代码片段存在两个问题:

第一个问题:${}是用于指定变量名的语法。换句话说,${something}===$something

第二个问题:&&和| |后面必须跟一个命令。[[$VAR='true']&&40表示如果$VAR为'true',则执行命令40

所以你的台词应该是这样的:

pytest-cov在=$[[$VAR='true']]和&echo 40 | | echo 80测试下失败/ bash中的三元运算符仅在数值范围内工作,并且仅适用于数值


而且,这与pytest本身无关;我正在删除该标签。

下面一切都好,或者您可以做…$真实echo中的案例$var 40;;*回声80;;以撒。。。祝你好运。下面一切都好,或者你可以做…$真实echo中的案例$var 40;;*回声80;;以撒。。。祝你好运。据我所知,在一个Pipfile脚本中不能执行多个命令。据我所知,在一个Pipfile脚本中不能执行多个命令。value:'$if'你没有在shell中运行它。value:'$if'你没有在shell中运行它。@room13你从来没有提到过pipenv。我分享的是bash,正如您在问题上加了标签一样,它起了作用。如果问题出在pipenv身上,那完全是另一回事,你应该在你的问题中提到这一点。@room13你从来没有提到过pipenv。我分享的是bash,正如您在问题上加了标签一样,它起了作用。如果问题出在pipenv上,那完全是另一回事,你应该在问题中提到这一点。