我尝试链接不同的命令来自动化一个普通的docker进程。这不是一个docker的事情,它更像是一个尝试在bash中自动化它的事情。
我可以运行:
docker ps | grep manager | cut -f -d ' '
其列出了当前的Docker容器,挑选出包含单词“manager”的一个,然后获取第一字段,其是容器ID,例如3A 5455 F3 AC 72,
我可以接着跑:
docker inspect -f'{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}} 3a5455f3ac72
获取Docker容器的IP地址,例如172.18.0.4
我想实现的是一个名为container_id的变量和一个名为container_IP的变量,我可以在bash脚本中使用它们。
container_id="docker ps | grep manager | cut -f 1 -d ' '"
container_ip='docker inspect -f'{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $container_id'
但是当我尝试创建container_id变量时,我得到:
invalid argument "1" for "-f, --filter" flag: bad format of filter (expected name=value)
See 'docker ps --help'.
我想我在如何使用单引号/双引号方面有一个错误,但我不知道我错在哪里。
1条答案
按热度按时间e0bqpujr1#
您的代码可能如下所示:
使用单引号/双引号时出错
引号在这里并不重要。不要将命令存储为字符串。使用函数来存储命令。记住用shellcheck检查你的脚本。另请参阅http://mywiki.wooledge.org/BashFAQ/050。
从包含单引号的管道命令创建变量
要创建变量,请执行带有命令替换的命令。您可以只执行以下命令来代替函数: