将Shell命令的输出复制到变量,并需要将输出数据的逗号分隔

时间:2019-08-20 13:23:21

标签: bash docker unix sh concat

我正在尝试获取docker容器的IP,并且需要以逗号分隔的方式传递IP。

使用以下命令,我可以获取容器ip

sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(sudo docker ps -q --filter "name=slave")

输出->

> 10.17.0.4
> 10.17.0.3
> 10.17.0.2
  

需要帮助将输出IP保存到变量并处理IP以逗号分隔,例如 10.17.0.4,10.17.0.3,10.17.0.2

1 个答案:

答案 0 :(得分:1)

您正在使用旧版本的Docker(信息)。因此,以下命令在新版本的Docker中将不起作用

sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(sudo docker ps -q --filter "name=slave") | sed -n -e 'H;${x;s/\n/,/g;s/^,//;p;}'

在新版本的Docker中,您可以尝试以下命令。

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q  --filter ancestor=adminer) | sed -n -e 'H;${x;s/\n/,/g;s/^,//;p;}'

您可以在新版本中使用以下命令基于图像进行过滤,这将返回所有容器ID,其他明智的旧命令将仅返回新版本中的一个容器。

docker ps -q  --filter ancestor=image_name

enter image description here