7

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?)

U. Windl
  • 3,480
  • 26
  • 54
gluuke
  • 1,179
  • 6
  • 15
  • 22

1 Answers1

16

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.

l0b0
  • 55,365
  • 30
  • 138
  • 223