変数に特定の数のスペースを格納する必要があります。
私はこれを試しました:
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
2番目には1つしかありません。
execve("/bin/echo", ["echo", "this is a test"], [/* 21 vars */]) = 0