3

I'm trying to do the following in a bash script:

com=`ssh host "ls -lh"`

echo $com

It works, but the echo will break the output (instead of getting all lines in a column, I get them all in a row).

If I do: ssh host ls -lh in the CLI it will give me the correct output and layout.

How can I preserve the layout when echoing a variable?

yellowantphil
  • 1,483
  • 5
  • 21
  • 30
w00t
  • 616
  • 3
  • 9
  • 16

2 Answers2

2

You need:

echo "$com"

The quotes make the shell not break the value up into "words", but pass it as a single argument to echo.

legoscia
  • 39,593
  • 22
  • 116
  • 167
  • Oh c'mon, I was expecting something more "difficult". But nonetheless, it worked. Thanks! – w00t Apr 21 '10 at 15:59
1

Put double quotes around $com:

com=`ssh host "ls -lh"`
printf "%s" $com | tr -dc '\n' | wc -c   # count newlines
printf "%s" "$com" | tr -dc '\n' | wc -c
echo "$com"
dragpv
  • 11
  • 1