2014-02-25 7 views
5

Ich habe diese Zeile:Ein Ausrufezeichen in einem ssh Remote-Aufruf zu awk entkommen?

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 }}'" 

Doch dies erzeugt den folgenden Fehler:

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

Nicht ganz sicher, wie ich sollte das Ausrufezeichen entkommen. Irgendwelche Ideen?

Grüße,

David

Antwort

8

Bash wertet ! Geschichte Manipulation auch in doppelte Anführungszeichen. Und wenn Sie es in Anführungszeichen fliehen, erhalten Sie nur \! (ernsthaft, wtf bash?). Sie müssen die doppelten Anführungszeichen beenden, entweder '!' oder \! hinzufügen und die doppelten Anführungszeichen erneut öffnen.

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

Für die Aufzeichnung behandelt zsh als Escape in doppelten Anführungszeichen richtig ("\!" ->!).