Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to correctly save the unix top command output into a variable?

I've got to save the output of the top command into a variable and I do this:

myvar=`top -b -n1 | head -n 18`

The problem is that it seems to be ignoring the return characters, so when I echo the content of $myvar I see something like:

top - 15:15:38 up 745 days, 15:08, 5 users, load average: 0.22, 0.27, 0.32 Tasks: 133 total, 1 running, 132 sleeping, 0 stopped, 0 zombie Cpu(s): 6.4% us, 1.6%sy, 0.0% ni, 91.7% id, 0.3% wa, 0.0% hi, 0.0% si Mem: 2074716k total, 2038716k used, 36000k free, 84668k buffers Swap: 4192924k total, 107268k used, 4085656k etc...

How can I save all top data correctly?

like image 583
Cristian Avatar asked Dec 05 '22 03:12

Cristian


1 Answers

Notice the difference:

#! /bin/bash

x=`top -b -n 1 | head -n 5`
echo $x
echo --------------------
echo "$x"

Output:

top - 14:33:09 up 7 days, 5:58, 4 users, load average: 0.00, 0.00, 0.09 Tasks: 253 total, 2 running, 251 sleeping, 0 stopped, 0 zombie Cpu(s): 1.6%us, 0.4%sy, 70.3%ni, 27.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 3926784k total, 3644624k used, 282160k free, 232696k buffers Swap: 9936160k total, 101156k used, 9835004k free, 1287352k cached
--------------------
top - 14:33:09 up 7 days,  5:58,  4 users,  load average: 0.00, 0.00, 0.09
Tasks: 253 total,   2 running, 251 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.6%us,  0.4%sy, 70.3%ni, 27.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3926784k total,  3644624k used,   282160k free,   232696k buffers
Swap:  9936160k total,   101156k used,  9835004k free,  1287352k cached

Without the quotes, the contents of the variable are ground up in the shell's argument processing.

like image 160
Greg Bacon Avatar answered Dec 20 '22 01:12

Greg Bacon