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

时间:2019-09-24 20:59:59

标签: bash xargs

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

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

如果我跑步

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

我按预期返回了一个docker 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。

1 个答案:

答案 0 :(得分:0)

尝试:

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

或更简单:

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

不确定我不明白的xargs。

运行:...| ... docker ...docker标准输入重定向到... awk的输出,{{1}已经读取了}。因此xargs将 联合国(已关闭) docker abc 损坏,然后失败。