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

Command run via xargs fails but runs manually

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

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

如果我运行

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

我得到了一个 docker id 字符串,正如预期的那样。如果我执行 docker attach {id string}(从正上方语句的 return 复制),它会起作用。但是当我 运行 顶部的完整命令时,我得到一个错误 (the input device is not a TTY).

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

尝试:

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

或更简单:

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

Not sure what about xargs I don't understand.

运行:...| ... docker ... 将重定向 docker 标准输入 到 ... awk 的输出, xargs 已经阅读了。所以 docker abc 将 r un with a broken (already closed) STDIN,然后失败。