问题
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?
回答1:
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
.
回答2:
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"
来源:https://stackoverflow.com/questions/2684216/how-do-i-echo-command-without-breaking-the-layout