【问题标题】:Get `the input device is not a TTY` error when run docker command inside a while loop在 while 循环中运行 docker 命令时出现“输入设备不是 TTY”错误
【发布时间】:2020-03-24 09:38:12
【问题描述】:

我有以下 bash 脚本。它在 while 循环中运行 docker run 命令,该循环从文本文件中逐行读取。

#!/bin/sh -eu

while IFS= read -r url; do
    docker run --rm -it alpine ls
done < repo_list.txt

执行上述脚本时出现此错误the input device is not a TTY。但是,如果我像这样删除while loop,它可以正常工作:

#!/bin/sh -eu
docker run --rm -it alpine ls

我知道我可以通过从 docker 命令中删除 -it 参数来修复它。但我想知道为什么while loop 会导致这个错误。有什么方法可以在不更改 docker 命令的情况下修复它?

【问题讨论】:

    标签: bash docker tty pty


    【解决方案1】:

    在您的第二个示例中,您忘记更改标准输入,就像您在 while 循环中所做的那样:

    < repo_list.txt
    

    将输入作为文件,您不能同时启用交互和 tty 支持,因为该文件不是 tty 设备。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 2021-12-16
      • 2018-04-12
      • 2021-02-04
      • 2018-09-27
      • 1970-01-01
      相关资源
      最近更新 更多