来自一个命令管道的不同部分的多个变量赋值

来自一个命令管道的不同部分的多个变量赋值

假设我有 2 个变量,分配如下:

psaux=`ps aux | grep someProcessName`
pscount=`ps aux | grep someProcessName | wc -l`

我想将分配合并到一行中,以便“ps aux | grep someProcessName”部分仅执行一次,所以我知道两次执行之间不可能发生任何更改。

我能想到的最接近的是以下怪诞的伪代码:

read psaux pscount <<<$(ps aux | grep someProcessName | tee &1 | wc -l)

答案1

只需重新使用第一个变量:

psaux="$( ps aux | grep "someProcessName" )"
pscount="$( printf '%s\n' "$psaux" | wc -l )"

该命令grep仅被调用一次。
此类调用的结果被重新用于计算行数。

相关内容