2011-06-15 199 views
0

我正在調整一個KSH腳本,並試圖將ssh放入各種主機,並在vfstab上執行一個grep命令,該命令將返回某一行。問題是,我無法得到以下工作。我試圖獲取它返回的行並將其附加到目標文件。有沒有更好的方法來做到這一點,ex命令變量分配grep語句?該命令可以在腳本中正常工作,但嵌套的引用似乎對其不屑一顧。不管怎麼說,這裏的線路:爲什麼這個ssh命令不能在ksh中工作?

ssh [email protected]$host "grep '/var/corefiles' $VFSTAB_LOC | awk '{print $3, $7}' " >> $DEST 

這導致:

awk: syntax error near line 1 
awk: illegal statement near line one 

如果沒有做到這一點,請讓我知道一個更好/更正確的方法!

回答

2

你在雙引號把遠程命令,所以$ 24和$ 7報錯了awk主體將被替換。 awk可能會看到'{print ,}'。在awk身上逃離美元符號。

ssh [email protected]$host "grep '/var/corefiles' $VFSTAB_LOC | awk '{print \$3, \$7}' " >> $DEST 
                   ^^
+0

就是這樣!我不知道你必須擺脫美元符號。謝謝你的理解! – thomascirca 2011-06-15 17:26:38

0

下面我試着和它的工作對我(KSH)不知道爲什麼它會在你的情況

user="username"; 
host="somehost"; 
VFSTAB_LOC="result.out"; 
DEST="/home/username/aaa.out"; 
echo $DEST; 
`ssh [email protected]$host "grep '/abc/dyf' $VFSTAB_LOC | awk '{print $3, $1}'" >> $DEST`; 
相關問題