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


15

Ich versuche, watch mit Befehlen, die Anführungszeichen enthalten, zum Funktionieren zu bringen, und die Watch-Manpage ist nicht sehr detailliert über die Funktionsweise von Anführungszeichen. Um ein konkretes Beispiel zu geben, wie kann ich den folgenden Befehl in watch ausführen:

ps -ef | awk -F' ' '{print $2}'

Ich habe es versucht:

watch "ps -ef | awk -F' ' '{print $2}'"

und

watch 'ps -ef | awk -F\' \' \'{print $2}\''

aber keines davon funktioniert richtig.

Antworten:


18

Ich denke du musst dem $Schild entkommen :

watch "ps -ef | awk -F' ' '{print \$2}'"

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


7

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


2

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

watch "ps -ef | awk -F' ' '"'{print $2}'"'"

oder

watch 'ps -ef | awk -F'"' ' '"'{print $2}'"'"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.