2016-03-29 14 views
0

Dockerコンテナの管理スクリプトを作成しています。現在、ユーザーは特定の変数を使用する前に設定する必要があります。多くの場合、これらの変数はDockerファイルですでに定義されているため、デフォルトではこれらの値を読み取る必要があります。bashのDockerfileのボリューム配列の解析

これらのDockerfilesで使用されている配列形式に問題があります。ボリュームの定義がVOLUME ["/root/", "/var/log/"]の場合、ファイルスクリプトは/ root /と/ var/logを把握できるはずですが、私はこれをまだ達成できませんでした。

これまではgrep VOLUME Dockerfile | cut -c 8- | grep -o -P '(?<=").+?(?=")'を使って "/ root /" "、" and "/ var/log"をファイルから取り出すことができましたが、このstilには省略する必要がある "、"が含まれています。

これを正しく解析する方法についての提案はありますか?

答えて

1

awkレスキュー!

$ echo VOLUME ["/root/", "/var/log/"] | 
    awk -F'[ ,\\[\\]]' '/VOLUME/{for(i=3;i<=NF;i+=2) print $i}' 

/root/ 
/var/log/ 

区切り文字を設定すると、すべてのフィールドを抽出できます。