쉘 스크립트 변수에 공백 저장

쉘 스크립트 변수에 공백 저장

변수에 특정 개수의 공백을 저장해야 합니다.

나는 이것을 시도했습니다 :

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

관련 정보