HOWTO · Linux

Bash에서 문자열을 연결하는 방법

Bash에서 문자열을 연결하는 방법을 알아보세요. 인접한 변수와 리터럴을 결합하고, += 연산자로 기존 값에 내용을 덧붙이며, 반복문과 명령 치환으로 문자열을 만드는 방법을 예제로 설명합니다.

이 페이지의 내용

Bash에서는 따옴표로 감싼 값을 나란히 두어 문자열을 연결하거나 +=를 사용해 기존 변수에 내용을 덧붙일 수 있습니다. 공백은 값을 지정할 때 직접 넣은 경우에만 포함됩니다.

기본 문자열 연결

두 값을 연결하려면 따옴표로 감싼 변수 확장을 나란히 배치합니다. 구분자가 필요하면 따옴표 안에 직접 넣으세요.

string1="Hello"
string2="World"
result="$string1 $string2"
printf '%s\n' "$result"

result에 $string1과 $string2 사이의 공백이 포함되어 있으므로 값은 Hello World가 됩니다. printf '%s\n' "$result"처럼 명령에 값을 전달할 때 확장을 따옴표로 감싸면 공백과 와일드카드 문자가 단어 분리나 경로명 확장으로 처리되지 않고 값 안에 그대로 남습니다. 변수 뒤에 붙은 텍스트가 변수 이름의 일부로 해석될 수 있다면 중괄호로 이름을 구분합니다. 예를 들어 "${string1}_suffix"처럼 쓸 수 있습니다. Bash 변수에는 문자열형이나 정수형 같은 고정된 유형이 없으므로, number=42 다음에 label="ID: $number"를 지정하는 것처럼 숫자처럼 보이는 값도 텍스트에 포함할 수 있습니다.

+= 연산자 사용

+=를 사용하면 변수의 현재 값 뒤에 오른쪽의 텍스트를 덧붙입니다.

greeting="Hello"
greeting+=" World"
printf '%s\n' "$greeting"

" World" 앞의 공백도 덧붙이는 텍스트에 포함되므로 greeting에는 Hello World가 저장됩니다. 여기서 +=는 같은 변수를 갱신하는 문자열 덧붙이기 연산자이며, 산술 덧셈이 아닙니다.

여러 문자열 연결

따옴표로 감싼 변수 확장과 리터럴을 나란히 두면 하나의 값을 만들 수 있습니다. 필요한 위치에 구분자를 넣으세요.

first="Bash"
second="is"
third="great!"
combined="$first $second $third"
printf '%s\n' "$combined"

세 변수 확장은 지정한 순서대로 결합되고, 대입식에 직접 넣은 두 개의 공백이 구분자 역할을 합니다. 공백 없는 형식이 필요하면 공백을 넣지 마세요. Bash가 구분자를 자동으로 추가하지는 않습니다.

반복문에서 문자열 연결

항목을 차례로 덧붙입니다. 다음 예제는 항목 사이에 공백을 넣으며 끝에 불필요한 공백을 남기지 않습니다.

result=""
separator=""
for word in "Learning" "Bash" "is" "fun"
do
    result+="${separator}${word}"
    separator=" "
done
printf '%s\n' "$result"

첫 항목은 구분자 없이 추가됩니다. 각 항목을 처리한 뒤 separator에 공백 하나를 지정하므로 이후 항목은 공백으로 나뉘고, 마지막 값은 fun으로 끝납니다. 따옴표로 감싼 단어를 원하는 반복 값으로 바꿔 사용할 수 있습니다. 공백이나 셸 와일드카드 문자가 들어갈 수 있는 값을 넣을 때는 변수 확장을 따옴표로 감싸세요.

명령 치환 사용

$(...) 형식의 명령 치환은 명령을 실행한 뒤 표준 출력을 둘러싼 대입식에 삽입합니다.

name="John"
greeting="Hello, $(printf '%s' "$name")!"
printf '%s\n' "$greeting"

명령의 출력이 Hello, 와 ! 사이에 삽입됩니다. 명령 치환은 출력 끝의 줄바꿈 문자를 제거합니다. 명령 안에서 값을 사용할 때도 따옴표로 감싸고, 결과 변수를 인수로 전달할 때도 따옴표로 감싸세요.

결론

Bash에서 문자열을 연결하려면 따옴표로 감싼 값을 나란히 두고, 필요한 구분자를 직접 넣거나, +=로 기존 값에 내용을 덧붙이면 됩니다. 반복문으로 덧붙이기를 반복할 수 있고 $(...)로 명령 출력을 삽입할 수도 있습니다. 명령에 값을 전달할 때 변수 확장을 따옴표로 감싸면 공백과 와일드카드 문자가 값의 일부로 유지됩니다.

FAQ

  1. Bash에서 문자열 두 개를 어떻게 연결하나요?
    combined="${first}${second}"처럼 따옴표로 감싼 변수 확장을 나란히 대입하거나, combined+="$second"처럼 하나를 덧붙이면 됩니다. 결과에 공백이 필요하면 따옴표로 감싼 텍스트에 공백을 포함하세요.

  2. 반복문에서 문자열을 연결할 수 있나요?
    네. 각 항목을 +=로 결과 변수에 덧붙이면 됩니다. 결합한 값에 구분자가 필요하다면 항목 사이에 직접 추가하세요.

  3. Bash의 명령 치환이란 무엇인가요?
    $(...)는 명령을 실행하고 표준 출력을 주변 텍스트에 삽입합니다. 출력 끝의 줄바꿈 문자는 제거됩니다.

  4. 문자열 길이는 어떻게 구하나요?
    ${#value}를 사용하면 Bash 변수 값의 길이를 구할 수 있습니다. 문자 수 계산은 현재 로케일의 영향을 받을 수 있으며, C 로케일에서는 바이트 수를 셉니다.

  5. 특수 문자가 있는 문자열도 연결할 수 있나요?
    네. 큰따옴표는 공백을 보존하고 변수 값의 와일드카드 확장을 막지만, 문자 그대로 입력하는 $, 역따옴표, 따옴표 등은 셸이 해석하지 않도록 인용하거나 이스케이프해야 할 수 있습니다. 임의의 텍스트를 대입할 때는 셸이 그 안의 문자를 해석하지 못하도록 적절한 인용 방식을 선택하세요.