目的:docker ps
の対話型バージョンを作成しようとしています。が存在することになるBASH - 特殊文字を含む文字列を解析する
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等)を選択すると:
例など、SSH、停止、開始:基本的に、それぞれの行は、ユーザーができるような「メニュー」であるましたオプションメニューを使用して、選択したコンテナに対してさまざまなアクションを実行します。
問題: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'配列の場合は、なぜそれを複数回宣言しますか?また、データを見ることなく(私はドッカーをインストールしていない他のものと同様に)、それは提供するための良い答えを知ることを難しくしますか? – grail
ご覧ください:http://www.shellcheck.net/ – Cyrus
@grail - データは私の質問のExampleブロックに表示されています。宣言文に関しては、私は2つの配列を扱っていると考えました: 1。行の配列 2.各行の "列"の配列 – aniculescu