我需要在变量中存储特定数量的空格。
我已经尝试过这个:
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