Во-первых, ваша команда ssh
поглощает ваш ввод (поступающий из nodes.txt
), добавьте ] dev / null
к нему. Добавление &
имеет тот же эффект, поскольку, помещая ssh
в фоновый режим, он отключает его от стандартного ввода.
Во-вторых, как заметил Кусалананда, ваши переменные $ {line [1]}
и $ {line [2]}
не заменяются, потому что они заключены в одинарные кавычки.
Что касается комментария @Kusalananda, оболочка не расширяет переменные в одинарных кавычках. Это объясняет, почему echo
внутри ssh
не работает. После того, как я заменю одинарные кавычки на двойные, результат будет примерно таким:
rivervm-1
rivervm-2 dc2 rack2
rivervm-3 dc2 rack3
rivervm-4 dc2 rack4
dc2
rack1
Connection to rivervm-1 closed.
Тем не менее, он выполняет только команды на rivervm-1, но не остальные.
Я нашел решение этой проблемы: добавление '&' в конец команды ssh. Может ли кто-нибудь объяснить мне, почему это работает? Спасибо!