Почему результат этого цикла for и while отличается?

У меня есть цикл for:

for host in $(cat ./hosts) do echo -e "$host" ssh -o "StrictHostKeyChecking no" $host "uptime" 2>/dev/null echo -e "\n" done 

и цикл while, который предполагается для той же самой работы, что и выше для цикла:

 while read host do echo -e "$host" ssh -o "StrictHostKeyChecking no" $host "uptime" 2>/dev/null echo -e "\n" done <./hosts 

hosts – это файл, расположенный в том же месте, что и скрипты, содержащие цикл for и while, и содержит имя хоста удаленных серверов. Цикл for печатает ожидаемый результат (для всех узлов, перечисленных в файле hosts), но в случае цикла while он отображает только время uptime первого узла и завершает работу!

hosts содержит одно имя узла в строке.

Вопрос в том, почему поведение этих двух циклов различно?

One Solution collect form web for “Почему результат этого цикла for и while отличается?”

Проблема в том, что ssh читает со стандартного ввода, поэтому он ест все оставшиеся строки. Вы можете просто подключить его стандартный вход в никуда:

 $ ssh -o "StrictHostKeyChecking no" $host "uptime" 2>/dev/null < /dev/null 

Рекомендации

  • ssh вырывается из цикла while в bash
  • Как отключить удаленный вход root через ssh?
  • Могу ли я объединить псевдоним bash?
  • Как обновить контейнер Fedora OpenVZ через SSH?
  • Возможно выполнить команду pipe с помощью su через ssh
  • Не удается подключиться через ssh?
  • Невозможно получить правильный код выхода из скрипта
  • Как SSH в определенный каталог?
  • SSH на два адреса, используйте тот, который подключается первым
  • su другому пользователю, использующему ключи ssh?
  • Операция rdiff-backup не разрешена
  • Как скопировать файлы с удаленного сервера unix в локальные окна?
  • Interesting Posts

    Почему эта команда xargs не работает?

    подстановка команды bash с перенаправлением: дескриптор файла

    Понимание микширования звуков в ALSA

    Сенсорная панель была отключена после подключения мыши Bluetooth и возврата

    Копирование файла через ssh

    Заменять локальные значения sudo по умолчанию с помощью sss или ldap

    Как настроить аварийную выключение клавиатуры на Linux?

    xmodmap проблемы и несоответствия с более чем 4 альтернативными символами на ключ

    Fedora 19 – Загрузка не отображает экран входа в систему

    Как удалить соединение по имени через Network Manager

    Почему, когда мы запускаем исполняемый файл, нам нужно добавить ./ вперед?

    Как случайно выбрать одно из нескольких имен хостов под одним псевдонимом (~ / .ssh / config)

    Почему это совмещение регулярных выражений?

    Можно ли сделать здесь-документ в одной строке или эхо-дословно?

    Браузер Chromium не позволяет установить формат бумаги по умолчанию для «Печать в файл»,

    Linux и Unix - лучшая ОС в мире.