web-dev-qa-db-ja.com

引用符を含む引数を指定してwatchコマンドを使用する

引用符を含むコマンドを使用してウォッチを正しく機能させようとしていますが、ウォッチマンページでは引用符の機能について詳しく説明されていません。具体的な例として、watch内で次のコマンドを実行するにはどうすればよいですか。

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

私はもう試した:

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

そして

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

しかし、これらはどちらも正しく機能しません。

15
jonderry

$記号をエスケープする必要があると思います:

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

それ以外の場合は、空の文字列("")になるシェルによって解釈されます。つまり、awkは行全体を出力します。

18
bmk

コマンドを常にシェルスクリプトに入れて、スクリプトを「監視」することができます。

7
Resorath

私はちょうど同様の問題に遭遇しました。 manページを見る を読んだ後、bashで文字列を連結するという解決策を見つけました。最後のコマンドは奇妙に見えました。

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

または

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