将 watch 命令与包含引号的参数一起使用

jon*_*rry 20 unix bash watch

我正在尝试使用包含引号的命令让 watch 正常工作,并且 watch 手册页对引号的工作方式不是很详细。举一个具体的例子,我如何在 watch 中运行以下命令:

ps -ef | awk -F' ' '{print $2}'
Run Code Online (Sandbox Code Playgroud)

我试过了:

watch "ps -ef | awk -F' ' '{print $2}'"
Run Code Online (Sandbox Code Playgroud)

watch 'ps -ef | awk -F\' \' \'{print $2}\''
Run Code Online (Sandbox Code Playgroud)

但这些都不能正常工作。

小智 20

我想你必须逃避这个$标志:

watch "ps -ef | awk -F' ' '{print \$2}'"
Run Code Online (Sandbox Code Playgroud)

否则它会被 shell 解释为空字符串 ( "") - 即awk会打印整行。


Res*_*ath 8

你总是可以把你的命令放在一个 shell 脚本中,然后“观察”这个脚本。