Menggunakan perintah arloji dengan argumen yang berisi tanda kutip

15

Saya mencoba agar arloji berfungsi dengan benar dengan perintah yang berisi tanda kutip, dan halaman manual arloji tidak terlalu mendetail tentang cara kerja tanda kutip. Untuk memberikan contoh nyata, bagaimana saya bisa menjalankan perintah berikut di dalam arloji:

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

Saya sudah mencoba:

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

dan

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

tetapi tak satu pun dari ini bekerja dengan benar.

jonderry
sumber

Jawaban:

18

Saya kira Anda harus melarikan diri dari $tanda:

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

jika tidak maka akan ditafsirkan oleh shell yang akan menghasilkan string kosong ( "") - yaitu awkakan mencetak seluruh baris.

bmk
sumber
7

Anda selalu bisa memasukkan perintah ke skrip shell, lalu "menonton" skrip.

Resorath
sumber
2

Saya baru saja bertemu masalah yang sama. Setelah membaca arloji Man Page , saya menemukan solusi yang bisa bekerja, yaitu menyatukan string dalam bash. Perintah terakhir tampak aneh, seperti:

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

atau

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