Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to preserve spaces when outputting a shell variable? [duplicate]

For string matching purposes I need to define a bash variable with leading spaces. I need to define this starting from an integer, like:

jj=5

printf seems to me a good idea, so if I want to fill spaces up to 6 character:

jpat=`printf "  %6i"  $jj`

but unluckly when I am trying to recall the variable:

echo $jpat

the leading whitespaces are removed and I only get the $jj integer as it was.

Any solution to keep such spaces?

(This is equivalent to this: v=' val'; echo $v$v. Why aren't there leading and multiple spaces in output?)

like image 866
gluuke Avatar asked Mar 13 '14 12:03

gluuke


1 Answers

Use More Quotes! echo "$jpat" will do what you want.

There is another issue with what you're doing: Command substitutions will remove trailing newlines. It's not an issue in the printf command you're using, but for example assigning jpat=$(printf " %6i\n" "$jj") would give you exactly the same result as your command.

like image 55
l0b0 Avatar answered Sep 28 '22 06:09

l0b0