Używanie polecenia watch z argumentem zawierającym cudzysłowy


15

Próbuję sprawić, by zegarek działał poprawnie z poleceniami zawierającymi cytaty, a strona podręcznika użytkownika do obejrzenia nie jest zbyt szczegółowa na temat działania cytatów. Aby podać konkretny przykład, jak mogę uruchomić następujące polecenie w zegarku:

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

Próbowałem:

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

i

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

ale żadne z nich nie działa poprawnie.

Odpowiedzi:


18

Chyba musisz uciec od $znaku:

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

w przeciwnym razie byłaby interpretowana przez powłokę, która skutkowałaby pustym ciągiem ( "") - tj. awkwypisałaby całą linię.


7

Zawsze możesz umieścić swoje polecenie w skrypcie powłoki, a następnie „obserwować” skrypt.


2

Właśnie spotkałem podobny problem. Po przeczytaniu obejrzanej strony podręcznika man znalazłem rozwiązanie, które mogłoby działać, a mianowicie połączyć łańcuchy w bash. Ostateczne polecenie wyglądało dziwnie, na przykład:

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

lub

watch 'ps -ef | awk -F'"' ' '"'{print $2}'"'"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.