Linux 如何在运行期间评估shell输出,并在此基础上生成条件?
我正在使用Jenkins运行一个命令Linux 如何在运行期间评估shell输出,并在此基础上生成条件?,linux,shell,docker,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 但语法似乎不起作用 这里的好方法是什么? 谢谢。它应该可以在Linux系统上工作: if [[ $
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
但语法似乎不起作用
这里的好方法是什么?
谢谢。它应该可以在Linux系统上工作:
if [[ $(docker ps -aq) -gt 0 ]]; then
docker kill $(docker ps -aq)
else
echo "There is no docker container running"
fi
或者您可以将
-gt
更改为=
最简单的方法可能是使用xargs(1)将stdout从docker ps
转换为命令行参数,以docker kill
。如果没有任何参数,它将不会运行命令;如果单个命令行上的参数过多,它将多次运行该命令行
docker ps -aq | xargs docker kill
如果没有容器,这将抛出一个错误。请尝试此操作。即使
docker ps-a
为空,这对我来说是正确的,并且不会打印错误。在bash 4.4上,使用docker kill失败需要至少一个参数