PowerShell의 문자열 보간
- PowerShell의 변수란 무엇인가?
- Windows PowerShell에서의 문자열 보간
- PowerShell에서 환경 변수와 함께 문자열 보간하기
- PowerShell에서 이스케이프 문자와 함께 문자열 보간하기
- PowerShell에서 특수 문자가 포함된 변수를 사용한 문자열 보간
- PowerShell에서 서브 표현식 연산자를 사용한 문자열 보간
- 결론

PowerShell에서의 문자열 보간(string interpolation)은 변수 값, 표현식, 명령어를 문자열 안에 포함시켜 동적으로 문자열을 형식화할 수 있는 강력한 기능입니다. 이 포괄적인 가이드는 문자열 보간의 복잡한 요소들에 대해 깊이 있게 다루며, 이 기능의 자세한 통찰력, 예제 및 실제 응용 프로그램을 제공합니다.
문자열 보간은 문자열 안의 자리 표시자와 함께 변수의 값을 대체합니다. 또한, 문자열 보간 과정은 문자열 안에 변수의 값을 표시합니다.
Windows PowerShell 문자열 보간은 형식이 지정된 문자열을 만들기 위해 더 읽기 쉽고, 이해하기 쉬우며, 편리한 구문을 제공합니다. 이 기사는 Windows PowerShell에서 문자열 보간 시 변수 사용에 대해 논의할 것입니다.
PowerShell의 변수란 무엇인가?
Windows PowerShell 문자열 보간에 대해 논의하기 전에, 이를 달성하기 위한 중요한 요구 사항 중 하나인 Windows PowerShell 변수에 대해 먼저 논의해야 합니다.
PowerShell의 변수는 데이터 저장 용기로, 사용자가 정보를 저장하고 스크립트 실행 중에 이를 조작할 수 있게 해줍니다. 이들은 특정 값이나 객체를 나타내는 기호적 이름으로, PowerShell 스크립트 내에서 데이터에 참조하고 작업할 수 있는 방법을 제공합니다.
PowerShell에서 변수의 주요 측면:
선언 및 이름 지정
선언:
PowerShell에서 변수는 $
기호 뒤에 이름을 붙여서 선언합니다.
예제:
$my_var = "Hello World!"
이름 지정 규칙:
- 반드시 문자 또는 밑줄로 시작해야 합니다.
- 문자, 숫자 및 밑줄을 포함할 수 있습니다.
- 대소문자를 구분하지 않습니다(
$variable
과$Variable
은 동일한 것을 참조합니다).
데이터 유형
동적 타이핑:
PowerShell은 동적 타이핑을 사용하며, 이를 통해 변수는 명시적인 유형 선언 없이도 다양한 유형의 데이터를 저장할 수 있습니다.
예제:
$number = 10
$text = "Sample text"
범위
변수는 다양한 범위를 가질 수 있으며, 이는 스크립트 내에서의 가시성과 접근성을 결정합니다.
로컬: 현재 범위 또는 함수에 제한됩니다.
스크립트: 현재 스크립트 전반에 걸쳐 가시적입니다.
글로벌: 전체 PowerShell 세션에서 접근 가능합니다.
할당 및 수정
할당:
변수는 할당 연산자(=
)를 사용하여 값을 할당합니다.
예제:
$myVariable = "New value"
수정:
변수는 새 값을 할당하거나 기존 값을 변경하여 수정할 수 있습니다.
예제:
$number = $number + 5
이 변수들을 사용하여 Windows PowerShell에서 문자열 보간을 수행할 것입니다.
Windows PowerShell에서의 문자열 보간
문자열 보간은 변수를 포함하고, 표현식 또는 명령어를 문자열 안에 직접 삽입하여 동적인 콘텐츠를 생성하는 과정을 의미합니다.
일반 구문:
- 큰 따옴표로 감싼 문자열(
"..."
): 큰 따옴표로 감싸진 문자열은 문자열 보간을 허용합니다. - 보간 구문:
$variable
,$($expression)
, 및$(command)
변수 보간하기
Windows PowerShell에서 문자열 보간을 사용하여 연결된 문자열의 예로 이해해 보겠습니다.
예제 코드:
$company = "XYZ Company"
Write-Output "Welcome to $company"
위 PowerShell 스크립트에서, $company
변수는 XYZ Company
문자열 값을 포함하고 있습니다. 큰 따옴표 ""
안에서 Windows PowerShell은 문자열 변수 이름을 보간하고 아래의 문장에서 그 결과를 표시합니다.
출력:
Welcome to XYZ Company
변수 이름을 작은 따옴표 ''
안에 넣으면, 아래와 같이 변수 이름이 대신 표시됩니다.
예제 코드:
$company = "XYZ Company"
Write-Output 'Welcome to $company'
출력:
Welcome to $company
이러한 출력이 발생하는 이유는 작은 따옴표로 감싼 모든 것이 리터럴 표현으로 처리되기 때문입니다. 따라서 문자열을 보간할 때는 큰 따옴표를 사용하고 있는지 확인하십시오.
표현식 보간하기
$age = 25
Write-Host "In five years, I'll be $($age + 5) years old."
문자열 보간은 $()
로 표시되며, 변수 값이나 표현식을 문자열 안에 포함할 수 있습니다. 이 경우, $age
변수에 저장된 값에 5
를 추가하여 미래의 나이를 동적으로 계산하여 출력은 5년 후 예상되는 나이를 반영하게 됩니다.
명령어 보간하기
$currentDate = Get-Date
Write-Host "The current date is $(Get-Date)."
결과는 Write-Host
줄이 실행되는 순간의 현재 날짜와 시간을 보여주며, Get-Date
cmdlet로부터 업데이트된 값을 문자열 내에서 동적으로 보간합니다.
PowerShell에서 환경 변수와 함께 문자열 보간하기
환경 변수는 운영 체제에 저장된 동적 이름 값으로 시스템 환경, 사용자 설정 및 구성 설정에 대한 정보를 담고 있습니다.
Windows PowerShell에서 Env:
변수로 나타나는 환경 변수는 운영 체제 환경 및 프로그램을 저장합니다. 이 정보에는 운영 체제 경로, Windows 설치 디렉터리의 위치, 운영 체제에서 사용 중인 프로세스 수 등이 포함됩니다.
일반 환경 변수:
$env:USERNAME
: 현재 사용자의 사용자 이름을 나타냅니다.$env:COMPUTERNAME
: 컴퓨터의 이름을 저장합니다.$env:TEMP
: 임시 파일 디렉터리를 지정합니다.$env:PATH
: 시스템의 실행 파일 경로를 포함합니다.
Windows PowerShell에서 환경 변수는 다른 표준 변수처럼 문자열 안에서 보간될 수 있습니다.
예제 코드:
Write-Output "My computer name: $Env:COMPUTERNAME"
위의 PowerShell 스크립트에서, $Env: COMPUTERNAME
은 더블 따옴표 안에서 변수 값을 표시하고 문자열과 연결합니다.
출력:
My computer name: WINDOWS-PC01
PowerShell에서 이스케이프 문자와 함께 문자열 보간하기
문자열 보간 시 큰 따옴표를 사용해야 한다고 논의했음에도 불구하고, 특정 경우에는 변수를 큰 따옴표 안에 넣더라도 기대하는 결과가 제공되지 않습니다. 이 중 하나가 이스케이프 문자입니다.
이스케이프 문자는 문자 시퀀스 내에서 다음 문자의 대체 해석을 호출하는 일종의 문자입니다. 이스케이프 문자는 프로그램을 컴파일할 때 사용되는 특정 기호 때문에 프로그래밍 언어에서 일반적입니다.
PowerShell의 이스케이프 문자는 문자열 내에서 특별한 의미를 가질 수 있는 문자를 나타내는 데 사용되는 특수 시퀀스입니다. 이들은 문자열 내에 특수 문자를 포함하거나 문자열 내에서 형식을 제어할 수 있게 해줍니다.
일반 이스케이프 문자:
- 백틱 (`): 특별한 의미를 가진 문자를 이스케이프하는 데 사용됩니다.
- 큰 따옴표 (
"
): 큰 따옴표로 감싼 문자열 내에서 보간 및 표현식 평가를 가능하게 합니다. - 줄바꿈 (``n`): 줄바꿈 문자를 나타냅니다.
- 탭 (``t`): 수평 탭을 삽입합니다.
- 캐리지 리턴 (``r`): 커서를 줄의 시작으로 이동시킵니다.
예를 들어, Windows PowerShell에서 달러 기호 $
는 변수를 정의할 때 사용하는 가장 일반적인 연산자 중 하나입니다. 아래에서 달러 기호를 예로 사용할 것입니다.
예제 코드:
$price = 99
Write-Output "Discounted Price: $$price"
위의 Windows PowerShell 스크립트에서, 큰 따옴표 안의 $price
는 예상한 출력 결과를 제공하지 않는데, 스크립팅 환경이 이중 달러 기호 $$
를 다르게 해석하기 때문입니다.
출력:
Discounted Price: Discounted Price: $$priceprice
원하는 출력을 얻기 위해 아래와 같이 Windows PowerShell 이스케이프 문자를 사용하여 문자열 보간을 수행하세요.
예제 코드:
$price = 99
Write-Output "Discounted Price: `$$price"
출력:
Discounted Price: $99
PowerShell에서 특수 문자가 포함된 변수를 사용한 문자열 보간
앞서 언급했듯이, 달러 기호 $
로 시작하는 변수 이름은 영문자와 숫자 및 특수 문자를 포함할 수 있습니다. PowerShell의 변수는 백틱 (`), 달러 기호 ($
), 또는 따옴표 ("
)와 같은 특수 문자를 포함할 수 있습니다.
변수를 정의하는 가장 좋은 방법은 영문자와 밑줄 _
문자만 포함하는 것입니다. 다른 특수 문자를 포함하는 변수 이름은 사용하기 어려우므로 피하는 것이 좋습니다.
그러나 특수 문자가 포함된 변수를 사용하는 것이 불가능하다는 것은 아닙니다. 이러한 상황을 피할 수 없다면, 변수 이름의 모든 특수 문자를 포함하고 있는 달러 기호와 중괄호 ${}
를 사용할 수 있습니다.
예제 코드:
${this is a variable!} = "Hello"
Write-Output "${this is a variable!} World!"
출력:
Hello World!
"${this is a variable!}"
변수는 비전통적인 이름에도 불구하고 생성되고 값 "Hello"
가 할당됩니다.
Write-Output
내의 문자열 보간은 변수의 값을 텍스트 " World!"
와 연결하여 출력 "Hello World!"
를 생성합니다.
PowerShell에서 서브 표현식 연산자를 사용한 문자열 보간
PowerShell의 서브 표현식 연산자($()
)는 문자열 내에서 표현식, 명령 또는 서브 스크립트를 평가할 수 있게 해줍니다.
Windows PowerShell에서는 문자열 보간처럼 표현식 내에서 $()
서브 표현식 연산자를 사용하여 표현식을 실행할 수 있습니다. 이렇게 하려면 실행할 모든 표현식을 달러 기호와 괄호 ()
로 감싸야 합니다.
예제 코드:
$num1 = 10
$num2 = 5
Write-Output "$num1 + $num2 = $($num1+$num2)"
출력:
10 + 5 = 15
문자열 보간은 $num1
과 $num2
의 값(각각 10
과 5
)을 포함하여 $num1
과 $num2
를 더하여 얻은 산술 연산의 결과(15
)를 포함합니다.
결론
이 기사는 문자열 내에 변수 값, 표현식 및 명령을 포함시켜 동적인 문자열 형식을 가능하게 하는 PowerShell의 문자열 보간을 탐구합니다. 여기에는 다음과 같은 내용이 포함됩니다:
- PowerShell의 변수: 이러한 컨테이너는 명시적인 타입 선언 없이 다양한 데이터 유형을 보유하고 특정 이름 지정 규칙을 따릅니다.
- 문자열 보간의 기본: 이를 통해
$변수
,$($표현식)
, 및$(명령)
을 큰 따옴표로 감싸진 문자열 안에 포함시켜 동적인 콘텐츠를 생성합니다. - 사용 예:
- 문자열 내에서 동적인 콘텐츠를 위해 변수 사용.
- 시스템 관련 정보에 대해 환경 변수(
$Env:VARIABLE_NAME
) 통합. - 문자열 내에서 특수 문자나 형식을 처리하기 위해 이스케이프 문자(`) 사용.
${}
구문을 사용하여 특수 문자나 공백이 포함된 변수 생성 및 사용.- 문자열 내에서 복잡한 계산을 위한 서브 표현식 연산자
$()
활용.
문자열 보간에서 이러한 기술을 이해하면 PowerShell 사용자는 동적인 문자열 생성에 대한 강력한 도구를 갖추게 되어 스크립트 형식에서 가독성과 유연성을 높일 수 있습니다.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn