通过 xargs 运行的命令失败,但手动运行



我正在尝试创建一个将自动附加到我现有的python docker容器的命令,并尝试将一堆命令链接在一起。

docker ps | grep "mypythoncontainer" | awk '{print $1}' | xargs docker attach

如果我跑

docker ps | grep "mypythoncontainer" | awk '{print $1}' | xargs echo

正如预期的那样,我得到了一个码头工人 ID 字符串。如果我docker attach {id string}(从上面的语句返回中复制(,它可以工作。但是当我在顶部运行完整命令时,出现错误(the input device is not a TTY(。

所以docker ps | grep "mypythoncontainer" | awk '{print $1}' | xargs echo会回响abc,但docker ps | grep "mypythoncontainer" | awk '{print $1}' | xargs docker attach会失败,而docker attach abc工作。不确定我不明白的 xargs 是什么。

尝试:

docker attach $(docker ps | grep "mypythoncontainer" | awk '{print $1}')

或更简单:

docker attach $(docker ps | awk '/mypythoncontainer/{print $1}')

不确定我不明白的 xargs 是什么。

正在运行:...| ... docker ...会将docker的标准输入重定向到...awk的输出,已经被xargs读过了。所以docker abc会 un 与一个损坏的(已经关闭的(STDIN,然后失败。

最新更新