在 shell 脚本变量中存储空格

kpm*_*Dev 5 shell-script whitespace variable

我需要在变量中存储特定数量的空格。

我试过这个:

i=0
result=""
space() {
    n=$1
    i=0
    while [[ "$i" != $n ]]
    do
        result="$result "
        ((i+=1))
    done
}

f="first"
s="last"
space 5

echo $f$result$s
Run Code Online (Sandbox Code Playgroud)

结果是“firstlast”,但我预计“first”和“last”之间有5个空格字符。

我怎样才能正确地做到这一点?

cha*_*aos 7

"echo命令中使用双引号 ( ) :

echo "$f$result$s"
Run Code Online (Sandbox Code Playgroud)

这是因为 echo 将变量解释为参数,多个参数echo打印所有这些变量之间有一个空格。

以这个为例:

user@host:~$ echo this is     a      test
this is a test
user@host:~$ echo "this is     a      test"
this is     a      test
Run Code Online (Sandbox Code Playgroud)

在第一个中,有 4 个参数:

execve("/bin/echo", ["echo", "this", "is", "a", "test"], [/* 21 vars */]) = 0
Run Code Online (Sandbox Code Playgroud)

在第二个中,它只有一个:

execve("/bin/echo", ["echo", "this is     a      test"], [/* 21 vars */]) = 0
Run Code Online (Sandbox Code Playgroud)