如何在bash中打印很多空格然后在同一行打印单词?

How to print many spaces and then print word on the same line in bash?

我需要在行首打印带有一些空格的单词,我需要用变量设置空格数。

此代码无效:

spaces=20

echo "spaces: $spaces"

for ((n=0;n<$spaces;n++))
do
    printf '%s' ''
done
    
printf '%s' 'hello!'

实际输出:

spaces: 20

hello!

预期输出:

spaces: 20
    
                    hello!

改变这个:

    printf '%s' ''

为此:

    printf '%s' ' '

甚至这样:

    printf ' '

或者只是将整个程序替换为:

s=20; printf %$s's\n' "hello!"

您可以只使用单个 printf 来获得所需的空格填充数:

printf '%*s\n' "$spaces" 'hello!'
               hello!