dockerコンテナbashスクリプトの複数のコマンド

dockerコンテナbashスクリプトの複数のコマンド

コンテナ内でいくつかのコマンドを実行したいのですが、2番目のコマンドはコンテナ内で実行したくないので、ファイルはgrepコンテナのホームディレクトリにありません。誰も同じ問題がありますか?

# Throughput
    docker exec -i container_client bash << EOF >> mystatistics.xls
    (sockperf throughput --tcp --msg-size=256 -i $ipaddcontainer -p 12345 -t 10)> my_output_file_troughput.txt
    echo "Bridge mode" "," `grep 'BandWidth is ' my_output_file_troughput.txt | cut -d ' ' -f 5`
    exit
    EOF

ベストアンサー1

here-docsを使用するときは、マークアップを引用するときと引用しないときの違いを覚えておく必要がありますEOF。 qoutes がない場合、すべてのコマンドの置き換えは、Docker ではなくデフォルトのシェルで行われます。次の2つを比較します。

$ cat <<EOF
$(echo ok)
EOF

ok

そして:

$ cat <<"EOF"
$(echo ok)
EOF

$(echo ok)

したがって、コマンド(コマンド置換を含む)をDockerに渡すには、このトークンを参照する必要があります。

さて、

  1. しかし、なぜsubshel​​lを使いたいのですかsockperf
  2. ダニは廃止され、新しい構文はです$()

おすすめ記事