Если я следующийПочему это происходит после первой итерации?
tr -cd 'a-z' < /dev/urandom | fold -w10 | head -n40 > pw
for f in $(seq -w 40); do echo linux$f.example.com;done > hosts
while read -r x && read -r y <&3; do ssh $x -l root echo $y;done <hosts 3<pw
то цикл останавливается после первой итерации, но если я вставить echo
(который не то, что я хочу), то он перебирает все 40.
while read -r x && read -r y <&3; do echo ssh $x -l root echo $y;done <hosts 3<pw
Вопрос
Как я могу заставить его выполнить все 40 итераций, не создавая в первую очередь временный файл?
Возможно, расскажите нам, что он должен делать, поскольку он не работает! –
Интересно, если 'ssh' крадет ваши fds и читает/смывает их. Попробуйте закрыть stdin и '& 3' для команды' ssh'? –
@EtanReisner Добавление '/dev/null' решило проблему. Спасибо =) –