У меня есть сценарий оболочки, который извлекает данные из файла журнала между двумя датами и выполняет команду на выходе для генерации некоторого отчета. Файлы журнала находятся на разных серверах, а сценарии выполняются на разных серверах. Сценарий выглядит следующим образом:Выполнение команды удаленно на другом Linux-сервере из сценария оболочки
#!/bin/sh
time1=$1
time2=$2
echo `ssh -i key [email protected] -yes cat file | awk '{if(substr($4,2)>="'$time1'" && substr($4,2)<="'$time2'") print $0;}'` > tmp.log
`cat tmp.log | some operation to get detail`
Выход ожидается в нескольких строках нравится:
ip1 date1 - - request1 file1 method1 status1
ip2 date2 - - request2 file2 method2 status2
Но выход генерируется (моя команда) становится слиты в одной строке, содержащей все детали , например:
ip1 date1 - - request1 file1 method1 status1 ip2 date2 - - request2 file2 method2 status2
Когда команда выполняется непосредственно на сервере, она генерирует желаемый результат, но не при удаленном запуске.
Итак, мой вопрос: как я получу правильный результат и это хороший способ сделать это?
«Эхо» в обратных окнах - это не только глупо, но и неправильно. Просто замените 'echo \' whatever \ '' 'whatever'. См. Также http://porkmail.org/era/unix/award.html#echo – tripleee
Удаление обратных ссылок не производит никакого вывода. – anand
Спасибо, что я получил его backticks пренебрегает ** \ n **. поэтому я добавил команду внутри ** "" **. Например: 'echo '\' command \ '' ' – anand