【发布时间】:2017-07-16 11:45:58
【问题描述】:
目标:我正在尝试创建docker ps 的交互式版本。基本上,让每一行都是一个“菜单”,以便用户可以:启动、停止、ssh 等。
例子:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1. bf4a9c7de6bf app_1 "docker-php-entryp..." 7 days ago Up About an hour 443/tcp, 0.0.0.0:80->80/tcp, 9000/tcp app_1
2. 26195f0764ce app_2 "sh /var/www/html/..." 10 days ago Up About an hour 443/tcp, 127.0.0.1:8000->80/tcp app_2
选择(1/2 等)后,将出现一个选项菜单,用于对所选容器执行各种操作。
问题:我似乎无法弄清楚如何解析docker ps 命令的每一行,以便将容器 ID 和其他值作为数组元素。
到目前为止的代码:
list=`docker ps`
IFS=$'\n' array=($list)
for index in ${!array[@]}
do
declare -a 'a=('"${array[index]}"')'
printf "%s\n" "${a[@]}"
done
结果:
CONTAINER
ID
IMAGE
COMMAND
CREATED
STATUS
PORTS
NAMES
/usr/bin/dockersh: array assign: line 9: syntax error near unexpected token `>'
/usr/bin/dockersh: array assign: line 9: `bf4a9c7de6bf app_1 "docker-php-entryp..." 7 days ago Up About an hour 443/tcp, 0.0.0.0:80->80/tcp, 9000/tcp app_1'
【问题讨论】:
-
我对在循环内声明这一点感到困惑?如果它总是'a'数组,为什么要多次声明它?此外,没有看到任何数据(就像其他人一样,我没有安装 docker),很难知道提供一个好的答案?
-
@grail - 数据就是您在我的问题的示例块中看到的数据。至于声明语句,我的想法是我正在处理 2 个数组:1. 行数组 2. 每行上的“列”数组
-
感谢@Cyrus - 它已被加入书签:)
标签: bash text-parsing