我有一个问题,关于如何将输出存储到变量中,然后将管道存储到另一个命令
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
答案 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