docker execコマンドで文字列(<<<)で位置パラメータを使用する方法は?

docker execコマンドで文字列(<<<)で位置パラメータを使用する方法は?

私がやろうとしていることは次のとおりです。

    docker exec -it $1 /bin/bash <<< $CONTAINER_ID

しかし、これはうまくいきません。

出力:「docker exec」には少なくとも2つの引数が必要です。

<<<は$1を無視してSTDINを完全に置き換えるようです。 1つのパラメータのみ<<<に置き換えることは可能ですか?エイリアスを知っていますが、私には機能しません。標準ツールのみを使用して同僚にコマンドを渡すことができる必要があります。この場合、同僚はコマンドセンターの1つ以上のパラメータを置き換える最後の変数のみを変更します。

ベストアンサー1

<<<操作に誤ったツールです。パラメータ渡しに関連しない標準入力(stdin)を置き換えます。引数と標準入力はどちらもコマンド入力形式ですが、互いに完全に独立しています。xargsstdinをパラメータに変換することは可能ですが、そうすれば、最初に存在しなかった方法を使用するのではなく、実際に問題を解決しようとしています。

実際の目標と制約が何であるかはよくわかりませんが、関数を定義することはおそらくあなたが望むことを達成する最もきちんとした方法です。

execit() {
    docker exec -it "$1" /bin/bash
}

execit目的の関数名に変更します。)次に、たとえば実行しますexecit "$CONTAINER_ID"

これが目的の作業に適していない場合、次に最もクリーンな解決策は、Kamil Maciorowskiがコメントで提案したものです。

sh -c 'exec docker exec -it "$1" /bin/bash' sh "$CONTAINER_ID"

おすすめ記事