我尝试了各种使用grep的过滤器来尝试解决这个问题,但却无法破解它。与命令行不同的Bash输出
cpumem="$(ps aux | grep -v 'grep' | grep 'firefox-bin' | awk '{printf $3 "\t" $4}'
我提取用于处理的CPU和内存使用,当我在命令行运行它,我得到的2个字段正确输出:
ps aux | grep -v 'grep' | grep 'firefox-bin' | awk '{printf $3 "\t" $4}'
> 1.1 4.4
但相同的命令从内执行该bash脚本产生这样的:
cpumem="$(ps aux | grep -v 'grep' | grep 'firefox-bin' | awk '{printf $3 "\t" $4}')"
echo -e cpumem
> 1.1 4.40.0 0.10.0 0.0
我猜测它正在拿起3条记录,但我只是不知道从哪里来。
我通过使用grep -v'grep'过滤掉任何其他grep进程,有人可以提供任何建议或更可靠的方法吗?
您可以通过改变消除了第一个'grep'需要第二个到'grep'[f] irefox-bin'';它的模式不符合它自己。此外,只需用逗号替换“\ t”,因为该选项卡在被$(...)'捕获后将转换为单个空格。 – chepner