在 shell 脚本变量中存储空格

在 shell 脚本变量中存储空格

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

我已经尝试过这个:

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

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

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

答案1

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

echo "$f$result$s"

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

看这个例子:

user@host:~$ echo this is     a      test
this is a test
user@host:~$ echo "this is     a      test"
this is     a      test

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

execve("/bin/echo", ["echo", "this", "is", "a", "test"], [/* 21 vars */]) = 0

在第二个中,只有一个:

execve("/bin/echo", ["echo", "this is     a      test"], [/* 21 vars */]) = 0

相关内容