Question

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

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top