PowerShell에서 배열을 함수에 전달하는 방법

많은 프로그래밍 언어, 특히 PowerShell을 포함하여, 배열은 기본 데이터 구조입니다. 배열은 값을 효율적으로 저장할 수 있게 해주어 PowerShell 스크립팅의 다양한 작업에 중요한 도구가 됩니다.
이 문서에서는 배열과 PowerShell에서 배열을 함수에 전달하는 관례에 초점을 맞출 것입니다.
PowerShell 배열
PowerShell 배열은 Java, Python, C# 등과 같은 범용 프로그래밍 언어의 배열과 다르지 않습니다. 이들은 고정 크기의 값을 또는 어떤 데이터 타입의 객체를 저장할 수 있는 기능을 제공합니다.
구문:
$intTypeArray = 34, 100, 1000, 45, 455, 1
다음 예제에서 $intTypeArray
변수의 타입을 확인하기 위해 내장된 GetType()
메서드를 사용할 것입니다.
예상한 대로, 기본 타입은 System.Array
입니다. 이 배열의 데이터 타입을 명시적으로 지정하지 않았기 때문에 PowerShell 엔진은 이를 객체 배열로 생성했습니다.
흥미롭게도, PowerShell 배열은 단일 배열 내에서 다양한 타입의 요소를 수용할 수 있으며, 아래 코드 조각에서 예시 볼 수 있습니다.
코드:
$mixedElementArray = 200, 'stringElement', 12.555, 'hello'
출력:
보시다시피, 기본 PowerShell 배열은 Object[]
타입을 기반으로 합니다.
PowerShell에서는 모든 값이나 객체가 Object
에서 상속됩니다. 따라서 기본 PowerShell 배열에 모든 값이나 객체를 할당할 수 있습니다.
기본 배열 외에도 PowerShell은 강타입 배열로 알려진 변형을 제공합니다. 이 배열은 특정 데이터 타입의 값을 전용으로 수용합니다.
강타입 배열을 생성할 때는 참조 변수를 int32[]
, string[]
등과 같은 특정 배열 타입으로 캐스팅할 필요가 있습니다.
[string[]]$stringTypeArray = 'tesla', 'mecedes', 'audi', 'lambo'
$stringTypeArray
의 타입을 확인해 봅시다.
$stringTypeArray.GetType()
출력:
배열을 PowerShell 함수에 전달하기
PowerShell에서는 강타입 배열이 타입 안전성 때문에 PowerShell 프로그램에서 사용하는 것이 권장됩니다. 이미 정의된 배열을 함수에 전달해야 할 때, 다음 구문이 제대로 작동해야 합니다.
구문:
function <function_identifier>([<data_type>[]]$<parameter_name>)
{
}
이 구문에서:
function
: PowerShell에서 함수 정의를 시작하는 데 사용되는 키워드를 나타냅니다.<function_name>
: 함수의 이름을 나타냅니다.[<data_type>[]]
: 매개변수의 데이터 타입을 지정하여 함수 내에서 지정된 데이터 타입의 배열로 작업할 수 있음을 허용합니다.$<parameter_name>
: 함수 내에서 매개변수의 이름으로 사용됩니다.
이러한 방식으로 배열을 함수에 쉽게 전달할 수 있습니다. 이를 설명하기 위해 먼저 letsPassAnArray
라는 PowerShell 함수를 정의해 보겠습니다.
코드:
function letsPassAnArray([string[]]$stringList) {
foreach ($arrEle in $stringList) {
Write-Host $arrEle
}
}
이 예제에서 우리는 $stringList
라는 매개변수를 가진 letsPassAnArray
라는 PowerShell 함수를 정의합니다. 그런 다음 $stringList
배열의 각 요소($arrEle
)를 반복하는 foreach
루프를 시작합니다.
루프 내부에서는 각 배열 요소를 콘솔에 씁니다. 함수를 테스트하기 위해 'Apple'
, 'Orange'
및 'Grapes'
요소로 구성된 문자열 타입 배열인 $stringArr
를 생성합니다.
코드:
[string[]]$stringArr = 'Apple', 'Orange', 'Grapes'
letsPassAnArray($stringArr)
마지막으로 letsPassAnArray
함수를 호출하고 $stringArr
배열을 인수로 전달하여 함수가 배열의 각 요소를 반복하고 출력하게 합니다.
출력:
결론
PowerShell에서 배열과 이를 함수에 전달하는 방법을 이해하는 것은 효율적이고 체계적인 스크립팅에 필수적입니다. 다양한 데이터 타입을 수용할 수 있는 일반 배열이든, 타입 안전성을 위한 강타입 배열이든, 배열 조작을 마스터하면 더 효과적인 PowerShell 스크립트를 작성할 수 있습니다.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.