使用带有引号的参数的 watch 命令

使用带有引号的参数的 watch 命令

我正在尝试让 watch 正确使用包含引号的命令,但 watch 手册页并未详细介绍引号的工作原理。举一个具体的例子,我如何在 watch 中运行以下命令:

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

我试过了:

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

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

但它们都不能正常工作。

答案1

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

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

否则它将被 shell 解释,从而导致出现空字符串 ( "") - 即,awk将打印整行。

答案2

您可以将命令放入 shell 脚本中,然后“监视”该脚本。

答案3

我刚刚遇到了类似的问题。读完观看手册页,我找到了一个可行的解决方案,那就是在 bash 中连接字符串。最终的命令看起来很奇怪,例如:

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

或者

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

相关内容