2015-09-15 3 views
1

Я пытаюсь запросить содержимое файла журнала на удаленном сервере, однако я не могу заставить его работать.Bash: ssh input to while loop

#!/bin/bash 
while read line; do 
     echo "Do stuff to the file, line by line" 
done < (ssh -n [email protected] "cat /path/to/file") 

Я получаю синтаксическую ошибку в первой скобке. Если я удалю скобки, я получаю синтаксическую ошибку на флаге «-n».

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

Спасибо!

ответ

4

Для замены процесса вам понадобится еще <.

#!/bin/bash 
while read line; do 
     echo "Do stuff to the file, line by line" 
done < <(ssh -n [email protected] "cat /path/to/file") 

Первый < определяет входное перенаправление. Конструкция <(...) - это подстановка процесса, которая аналогична подстановке команд, но обрабатывает вывод прилагаемой команды как файла, а не строки.