Сценарий оболочки при чтении строки цикла останавливается после первой строки

У меня есть следующий сценарий оболочки. objective состоит в том, чтобы петля через каждую строку целевого файла (чей путь является входным параметром для скрипта) и работает против каждой строки. Теперь он работает только с самой первой строкой в ​​целевом файле и останавливается после обработки этой строки. Что-то не так с моим сценарием?

#!/bin/bash # SCRIPT: do.sh # PURPOSE: loop thru the targets FILENAME=$1 count=0 echo "proceed with $FILENAME" while read LINE; do let count++ echo "$count $LINE" sh ./do_work.sh $LINE done < $FILENAME echo "\ntotal $count targets" 

В do_work.sh я запускаю пару команд ssh .

Проблема в том, что do_work.sh запускает команды ssh и по умолчанию ssh считывает из stdin, который является вашим входным файлом. В результате вы видите только обработанную первую строку, потому что ssh использует оставшуюся часть файла, а цикл while завершается.

Чтобы предотвратить это, передайте параметр -n вашей команде ssh чтобы он читал /dev/null вместо stdin.

Параметр ssh -n предотвращает проверку состояния выхода ssh при использовании HEREdoc во время вывода конвейера в другую программу. Поэтому использование / dev / null в качестве stdin является предпочтительным.

 #!/bin/bash while read ONELINE ; do ssh [email protected]_xyz &1 | filter_pgm echo "Hi, $ONELINE. You come here often?" process_response_pgm EOF if [ ${PIPESTATUS[0]} -ne 0 ] ; then echo "aborting loop" exit ${PIPESTATUS[0]} fi done << input_list.txt 

Используйте ssh -n ... для запуска ваших удаленных команд через ssh.

 #! /bin/bash cat /root/host.txt | while read LINE .. .. 

использовать ssh -n -o StrictHostKeychecking=no в do_work.sh скрипте

  1. Элемент списка
  • Как выйти из цикла while в java со сканирующим методом «hasNext» как условие?
  • Какая петля быстрее, пока или для?
  • Цитирование через поиск в Bash, где имя файла содержит пробелы
  • Bash: Как закончить бесконечный цикл нажатием любой клавиши?
  • Java Как я могу разбить цикл while в инструкции switch?
  • Смешивание файлов и циклов
  • Вырыв из цикла While ... Wend
  • Как использовать .nextInt () и hasNextInt () в цикле while
  • Что такое исключение NumberFormatException и как его исправить?
  • Для vs. while в программировании на C?
  • Синтаксис для однострочного бесконечного цикла Bash
  • Давайте будем гением компьютера.