在 while 循环中执行 运行 docker 命令时出现“输入设备不是 TTY”错误
Get `the input device is not a TTY` error when run docker command inside a while loop
我有以下 bash 脚本。它 运行 docker run
命令在 while 循环中逐行读取文本文件。
#!/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 命令的情况下修复它吗?
在您的第二个示例中,您忘记像在 while 循环中所做的那样更改标准输入:
< repo_list.txt
将输入作为文件,您不能同时启用交互和 tty 支持,因为该文件不是 tty 设备。
我有以下 bash 脚本。它 运行 docker run
命令在 while 循环中逐行读取文本文件。
#!/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 命令的情况下修复它吗?
在您的第二个示例中,您忘记像在 while 循环中所做的那样更改标准输入:
< repo_list.txt
将输入作为文件,您不能同时启用交互和 tty 支持,因为该文件不是 tty 设备。