การใช้คำสั่ง watch กับอาร์กิวเมนต์ที่มีเครื่องหมายคำพูด


15

ฉันกำลังพยายามทำให้นาฬิกาทำงานได้อย่างถูกต้องด้วยคำสั่งที่มีคำพูดและหน้าคนดูนั้นไม่ละเอียดมากนักเกี่ยวกับการทำงานของคำพูด เพื่อเป็นตัวอย่างที่เป็นรูปธรรมฉันจะรันคำสั่งต่อไปนี้ภายในนาฬิกาได้อย่างไร:

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

ฉันได้พยายาม:

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

และ

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

แต่ไม่สามารถใช้งานได้อย่างถูกต้อง

คำตอบ:


18

ฉันเดาว่าคุณต้องหลบหนีจาก$สัญญาณ:

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

มิฉะนั้นจะถูกตีความโดยเชลล์ซึ่งจะส่งผลให้สตริงว่างเปล่า ( "") - เช่นawkจะพิมพ์ทั้งบรรทัด


7

คุณสามารถใส่คำสั่งในเชลล์สคริปต์ได้ตลอดเวลาจากนั้น "เฝ้าดู" สคริปต์


2

ฉันเพิ่งพบปัญหาที่คล้ายกัน หลังจากอ่านMan Pageของนาฬิกาฉันพบวิธีแก้ปัญหาที่สามารถใช้งานได้ซึ่งก็คือการเชื่อมสตริงเข้าด้วยกัน คำสั่งสุดท้ายดูแปลก ๆ เช่น:

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

หรือ

watch 'ps -ef | awk -F'"' ' '"'{print $2}'"'"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.