Verwenden des Befehls watch mit einem Argument, das Anführungszeichen enthält

10952
jonderry

Ich versuche, mit den Befehlen, die Anführungszeichen enthalten, eine korrekte Arbeitsweise der Uhr zu erreichen, und die Seite Watch Man ist nicht sehr detailliert, wie die Anführungszeichen funktionieren. Um ein konkretes Beispiel zu geben, wie kann ich den folgenden Befehl in watch ausführen:

ps -ef | awk -F' ' '' 

Ich habe es versucht:

watch "ps -ef | awk -F' ' ''" 

und

watch 'ps -ef | awk -F\' \' \'\'' 

aber beide funktionieren nicht richtig.

10

3 Antworten auf die Frage

14
bmk

Ich denke, du musst dem $Zeichen entkommen :

watch "ps -ef | awk -F' ' ''" 

Andernfalls würde es von der Shell interpretiert, was zu einer leeren Zeichenfolge ( "") führt - dh awkdie gesamte Zeile wird gedruckt.

5
Resorath

Sie können Ihren Befehl immer in ein Shell-Skript einfügen und dann das Skript "beobachten".

1
Adam_Yyx

Ich bin gerade auf ein ähnliches Problem gestoßen. Nachdem ich die Man-Page der Uhr gelesen hatte, fand ich eine Lösung, die funktionieren könnte, nämlich die Verkettung von Strings in Bash. Der letzte Befehl sah komisch aus, wie zum Beispiel:

watch "ps -ef | awk -F' ' '"''"'" 

oder

watch 'ps -ef | awk -F'"' ' '"''"'"