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


15

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

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

我试过了:

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

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

但是这些都不正确。

Answers:


18

我想你必须逃避这个$迹象:

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

否则它将由外壳程序解释,这将导致一个空字符串("")- awk即将打印整行。


7

您总是可以将命令放在shell脚本中,然后“监视”脚本。


2

我刚遇到类似的问题。阅读完手表手册页后,我发现了一个可行的解决方案,即将bash中的字符串连接起来。最终命令看起来很奇怪,例如:

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

要么

watch 'ps -ef | awk -F'"' ' '"'{print $2}'"'"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.