從 shell 腳本在另一台 Linux 伺服器上遠端執行命令

從 shell 腳本在另一台 Linux 伺服器上遠端執行命令

我有一個 shell 腳本,它從兩個日期之間的日誌檔案中提取詳細信息,並在輸出上執行命令以產生一些報告。腳本看起來像:

#!/bin/sh
time1=$1
time2=$2
echo `ssh -i key  user@ip -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

當直接在伺服器上執行相同的命令時,它會產生所需的輸出,但在遠端執行時則不會。
所以我的問題是如何得到正確的輸出,這是一個好方法嗎?

答案1

正如在各個地方所解釋的那樣(比如這個http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2007-05/msg00584.html) echo 輸出以空格分隔的參數

因此,您要么必須將反引號中的命令結果作為一個參數傳遞

echo "`some command that outputs multiple lines here`"

或不使用echo但例如printf

相關內容