Sử dụng lệnh watch với một đối số có chứa dấu ngoặc kép


15

Tôi đang cố gắng để đồng hồ hoạt động chính xác với các lệnh có chứa dấu ngoặc kép và trang hướng dẫn xem không chi tiết lắm về cách báo giá hoạt động. Để đưa ra một ví dụ cụ thể, làm thế nào tôi có thể chạy lệnh sau bên trong đồng hồ:

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

Tôi đã thử:

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

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

nhưng cả hai đều không hoạt động chính xác.

Câu trả lời:


18

Tôi đoán bạn phải thoát khỏi $dấu hiệu:

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

nếu không, nó sẽ được giải thích bởi shell sẽ dẫn đến một chuỗi rỗng ( "") - tức là awksẽ in toàn bộ dòng.


7

Bạn luôn có thể đặt lệnh của mình trong tập lệnh shell, sau đó "xem" tập lệnh.


2

Tôi vừa gặp một vấn đề tương tự. Sau khi đọc đồng hồ Man Page , tôi tìm thấy một giải pháp có thể hoạt động, đó là nối các chuỗi trong bash. Lệnh cuối cùng trông lạ, chẳng hạn như:

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

hoặc là

watch 'ps -ef | awk -F'"' ' '"'{print $2}'"'"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.