Сценарий оболочки - цикл while обрабатывает исключение

Я запускаю сценарий оболочки с циклом while, и он завершается с указанной ниже ошибкой. Как я могу избежать его или перехватить ошибку и позволить циклу продолжиться? т.е. как я мог обработать исключение

stty: standard input: Invalid argument

Ниже приведен скрипт, который я пытаюсь выполнить, но он выходит из цикла после первой итерации.

hfile=/tmp/prty.txt
while read property
do
 hostname=`echo $property | awk '{print $1}'`
 echo $hostname
 ssh -l gger $hostname ". <userhome>/.bash_profile; ggsci -v; exit  << EOF > /tmp/gg.txt

 EOF"
done < $hfile

file hfile
==========
user1  pas1
user2  pas2
user3  pas3

1 ответ

Решение

Теперь, когда у меня было больше кофеина, я вижу, что сообщение об ошибке - красная сельдь.

В тот момент, когда вы выполняете ssh, он получает контроль над stdin, который он будет полностью использовать. Это означает, что он будет читать данные из $hfile что, в свою очередь, означает, что после одной итерации цикла время while заканчивается.

Вы можете использовать -n переключитесь на ssh, чтобы решить эту проблему.

ssh -n -l gger $hostname ". <us...

-n Перенаправляет стандартный ввод из / dev / null (фактически предотвращает чтение из стандартного ввода)...

Другие вопросы по тегам