在BASHvariables中存储`docker run`命令输出

我有一个问题存储docker run -it -d -p 43211:3000 --name appname -h hostname -v $PWD/local_dir:/root/remote_dir repo/imagename在BASH varibale的输出。 我尝试了`反引号`,我也尝试运行它像官方文档说BASH_VAR=$(docker run ...) ,我甚至试图存储输出在一个文件与docker run --...>$FILE_DESCRIPTOR ,但没有运气存储错误情况,当名称已被另一个容器使用时,情况如下:

$ FATA[0000] Error response from daemon: Conflict. The name "appname" is already in use by container 7c84d8d703c8. You have to delete (or rename) that container to be able to reuse that name.

我想说的是,它对于成功的情况是有效的,所以我能够在BASH_VAR存储完整的容器ID,一旦成功运行应用程序,但不幸的是,这只能解决我面临的一半问题。

任何帮助,将不胜感激。

谢谢!

你可以使用一个while循环来读取产生的每一行输出,并用这种方式做一些事情。

 while read -r line_of_output; do echo "line: $line_of_output" done < <(docker ... 2>&1) 

另外,如果你正在编写一个交互式脚本,你可能想看看select bash内build

 $ help select select: select NAME [in WORDS ... ;] do COMMANDS; done Select words from a list and execute commands.