Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在运行期间评估shell输出,并在此基础上生成条件?_Linux_Shell_Docker - Fatal编程技术网

Linux 如何在运行期间评估shell输出,并在此基础上生成条件?

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 [[ $

我正在使用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 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失败需要至少一个参数