如何在运行过程中评估shell输出并基于此生成条件?

时间:2019-05-16 13:32:46

标签: linux shell docker

我正在使用Jenkins运行命令docker kill $(docker ps -aq),但是失败了,因为如果没有正在运行的Docker容器-$(docker ps -aq)的输出将为0,这将使docker kill命令失败并且jenkins作业将失败。

如何预防?

在想类似的东西:

if ( $(docker ps -aq) > 0)
then docker kill $(docker ps -aq)
fi

,但是语法似乎无法正常工作。

这里有什么好的方法? 谢谢。

2 个答案:

答案 0 :(得分:1)

最简单的方法可能是使用 xargs (1)将标准输出从docker ps转换为到docker kill的命令行参数。如果没有任何参数,它将不会运行该命令;如果单个命令行上的参数过多,则它将多次运行。

docker ps -aq | xargs docker kill

答案 1 :(得分:0)

它应该可以在Linux系统上运行:

if [[ $(docker ps -aq) -gt 0 ]]; then
    docker kill $(docker ps -aq)
else
    echo "There is no docker container running"
fi

或者您可以将-gt更改为!=