2014-02-25 24 views
5

我有這樣一行:在SSH遠程調用awk中轉義感嘆號?

ssh server1 "df -h | sed 's/%/ /g' | awk '{ if (\$5 > 90 && !/^[a-zA-Z]/) { var1=1 }} END { if (var1 == 1) { print 1 } else { print 0 }}'" 

然而,這將產生以下錯誤:

bash: !/^[a-zA-Z]/: event not found 

不太清楚應該怎麼逃脫的感嘆號。有任何想法嗎?

問候,

大衛

回答

8

猛砸評估,即使在雙引號!歷史操作。如果你在報價中轉義它,你會得到\!(嚴重的是,wtf bash?)。您必須結束雙引號,添加'!'\!,然後重新打開雙引號。

ssh server1 "df ... && "\!"/^[a-zA-Z]/...}}'" 

爲了記錄在案,zsh的處理雙引號中的反斜槓轉義正確("\!" - >!)。