假设我有 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
仅被调用一次。
此类调用的结果被重新用于计算行数。