Получить `устройство ввода не является ошибкой TTY` при запуске команды docker внутри цикла while - PullRequest
0 голосов
/ 24 марта 2020

у меня ниже bash скрипт. Он запускает команду docker run через некоторое время l oop, которая читает строку из строки.

#!/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

Я знаю, что могу это исправить, удалив параметр -it из команды docker. Но я хотел бы знать, почему while loop вызывает эту ошибку. Можно ли как-нибудь исправить это без изменения команды docker?

1 Ответ

0 голосов
/ 24 марта 2020

Во втором примере вы забыли изменить stdin, как вы делали в то время как l oop:

< repo_list.txt

При вводе в виде файла вы не можете включить интерактивную поддержку и поддержку tty одновременно, потому что файл не является устройством tty.

...