변수에 특정 개수의 공백을 저장해야 합니다.
나는 이것을 시도했습니다 :
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