BASH命令:如何将bash命令的输出保存到变量和后来的管道中

时间:2014-07-09 17:52:06

标签: bash

我有一个问题,关于如何将输出存储到变量中,然后将管道存储到另一个命令

var=$(ps -auxc | grep -vE '^USER'  )

#get top CPU 
echo $var |  sort -nr -k3 | head -1  
#get top memory
echo $var | sort -nr -k4 | head -1

2 个答案:

答案 0 :(得分:1)

确保在分配和访问变量时使用引号:

var="$(ps -auxc | grep -vE '^USER')"

#get top CPU 
sort -nr -k3 <<< "$var" | head -1  
#get top memory
sort -nr -k4 <<< "$var" | head -1

答案 1 :(得分:0)

我不确定这是否会一直有效:

IFS= read -rd '' var < <(ps -auxc | grep -vE '^USER')  ## -d '' may be -d $'\0'
echo -n "$var" | sort -nr -k3 | head -1  

但是使用readarray可以:

readarray -t var < <(ps -auxc | grep -vE '^USER')
printf '%s\n' "${var[@]}" | sort -nr -k4 | head -1