Can I align variables in a string with echo and bash?

bash, echo, shell, tabbing

Solution

Use printf:

printf "\rFileName : %20s : %8d of %8d Completed" $filename $index $lines

Problem

I want to do formatting using echo in shell scripting. Here is a small code snippet which is giving me the problem: ``` echo -en "\rFileName : $filename : $index of $lines Completed" ``` The `$filename` is a string with varying length, and this is causing problem with formatting in the terminal. How can I overcome this? Here's what I mean: ``` FileName : a800_102 : 6 of 6 Completed FileName : ersf_1024 : 56 of 56 Completed ``` I would like to have a table format when I display it on the terminal.

Original source