2016-12-13 8 views
2

私はデーモン化されたDockerコンテナを持っています。私はこのように、そのコンテナで現在のユーザーとして一度に複数のbashのコマンドを実行することができます。BashコマンドとしてのBashコマンド引数

docker exec -it <container_ID> /bin/bash -c "pwd; cd src; pwd" 

私は今、bashスクリプトを介してこれを行う必要があります。スクリプトは単純です:

#!/usr/bin/env bash 
# Here I do stuff to acquire the container_ID 
docker exec -it <container_ID> -user $(id -u):$(id -g) [email protected] 

そして私はこのように、スクリプトに引数を渡す:期待通りに引用符が取り除かれているので、仕事、そしてどのようなドッキングウィンドウの幹部が取得することではありません

./run_in_container.sh /bin/bash -c "pwd; cd src; pwd" 

/bin/bash -c pwd; cd src; pwd。だから私は、次の試してみてください。

./run_in_container.sh /bin/bash -c '"pwd; cd src; pwd"' 

そして私は、このエラーメッセージが出ます:

cd: -c: line 0: unexpected EOF while looking for matching `"' 
cd: -c: line 1: syntax error: unexpected end of file 

は何これを行うための正しい方法でしょうか?

この場合、これは非常に重要な情報ではありませんが、私はGnu bash 4.3.11を使用しています。 [email protected]周り

答えて

2

使用引用符:

docker exec -it <container_ID> -user $(id -u):$(id -g) "[email protected]" 
+0

確かに動作します!しかし、それを変数に格納するとすぐに、 'COMMAND = $ @'のように、 "$ {COMMAND}"を使うことはもうできません。私はそれが私が尋ねた質問ではないことを知っていますが、なぜそれを変数に割り当てるのが失敗するのでしょうか? –

関連する問題