我正在尝试让 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}'"'"