변수는 모든 유형의 코딩 의 가장 기본적인 데이터 구조입니다. 그러나 단일 변수는 대부분의 목적에 충분하지 않으며, 특히 더 복잡한 알고리즘을 처리할 때 더욱 그렇습니다.
여기서 배열이 등장합니다. C++이든 파이썬 이든 배열은 모든 프로그래밍 언어에 어떤 형태로든 존재합니다. 하지만 Windows PowerShell은 어떻습니까? PowerShell 배열은 어떻게 작동하나요? 어떻게 사용하나요? 구문은 무엇입니까? 알아보겠습니다.
PowerShell 어레이 101
간단히 말하면 배열은 구조화된 변수 모음입니다. 관련 변수를 번호가 매겨진 세트로 축소하여 수십 개의 이름을 추적하는 번거로움을 없애기 위한 아이디어입니다.
PowerShell에서는 변수 이름 앞에 $ 기호를 추가하여 변수를 만들 수 있습니다. 예:
$프라임 = 13
변수에는 숫자부터 문자열까지 모든 데이터 유형이 포함될 수 있습니다. 문자열을 지정하려면 큰따옴표나 작은따옴표만 사용하면 됩니다.
$name = “레빈”
이제 새 배열을 만들려면 동일한 변수에 여러 값을 쉼표로 구분하여 할당하면 됩니다. 다음과 같습니다:
$week = “월요일”, “화요일”, “수요일”, “목요일”, “금요일”, “토요일”, “일요일”
혼란을 피하기 위해 변수를 배열에 명시적으로 캐스팅하는 것을 선호하는 사람들도 있지만 반드시 그럴 필요는 없습니다. 이렇게 하려면 @ 기호 앞에 값을 괄호 안에 넣으세요.
$week = @(“월요일”, “화요일”, “수요일”, “목요일”, “금요일”, “토요일”, “일요일”)
이 방법은 일반적으로 다른 명령의 출력을 올바른 형식으로 수동으로 작성할 수 없는 배열에 넣으려고 할 때 유용합니다.
배열 생성
우리는 배열을 생성하는 가장 일반적인 방법을 이미 살펴보았습니다. 그러나 상황에 따라 더 적합한 다른 방법이 있을 수 있습니다. 예를 들어, 숫자 범위를 포함하는 배열을 생성하려면 범위 연산자를 사용할 수 있습니다:
$digits = (0..9)
이렇게 하면 0부터 9까지 10개의 숫자가 모두 포함된 배열이 생성됩니다. 나중에 값을 저장할 장소가 필요한 경우에는 빈 배열을 초기화할 수도 있습니다..
$values = @()
여러 배열을 서로 중첩할 수도 있지만 이러한 유형의 사용은 매우 빠르게 혼란스러울 수 있습니다.
$좌표 = @(
(5, 10, 23),
(11, 7, 16)
)
기본적으로 배열은 숫자, 문자열 또는 둘의 혼합 등 모든 변수 유형을 저장할 수 있습니다. 그러나 입력되는 값을 제한하려는 경우 유형을 명시적으로 정의할 수 있습니다. 예:
[int[]] $숫자 = 2,3,4,5
이렇게 하면 배열은 정수만 담을 수 있습니다. 다른 유형의 값을 할당하려고 하면 오류가 반환됩니다. 계산에 사용할 변수에 문자열을 입력하면 문제가 발생하므로 숫자 값만 사용하는 배열의 단순 오류를 방지하는 데 유용할 수 있습니다.
배열 액세스
지금까지 우리는 다양한 유형의 데이터를 포함하는 배열을 생성하는 여러 가지 방법을 살펴보았습니다. 그런데 이 데이터에 어떻게 액세스하나요?
PowerShell 배열은 다른 프로그래밍 언어에서 사용되는 것과 동일한 형식을 사용합니다. 각 배열 변수는 해당 인덱스 번호로 액세스할 수 있습니다. 예:
$var = $numbers[5]
이렇게 하면 $var변수에 있는 $numbers배열의 인덱스 5에 저장된 값이 복사됩니다. 배열 인덱스는 0부터 계산되기 시작하므로 첫 번째 항목은 0으로 액세스됩니다.
예를 들어 이것을 출력한다면:
'$days[2]'
화요일이 아니라 수요일이 될 것입니다.
이와 동일한 방법을 사용하여 이러한 값을 수정할 수도 있습니다. 예를 들어, 다음 명령은 배열의 두 번째 요소를 0으로 변경합니다:
$숫자[1] = 0
산술 표현식처럼 요소를 추가하는 것만으로 현재 항목의 값을 변경하는 대신 기존 배열에 더 많은 요소를 추가할 수도 있습니다.
$names += “Johny”
이 방법을 사용하면 여러 항목을 한 번에 추가하거나 전체 배열을 추가할 수도 있습니다.
$names += “찰리, 리암, 테레사”
$names += $surnames
쉼표로 구분된 방법은 여러 배열 요소에 액세스할 때도 적용됩니다. 예를 들어, 이를 입력하면 $weekdays에 $days의 처음 5개 요소가 저장됩니다..
$weekdays = $days[0,1,2,3,4]
배열 반복
배열의 특정 요소에 수동으로 액세스하는 것은 좋지만 배열의 전체 내용에 대해 작업을 수행하려는 경우 지루해질 수 있습니다. 더 우아한 접근 방식은 For 루프를 사용하는 것입니다.
For 루프는 배열의 모든 요소를 체계적으로 탐색하여 명령에 따라 각 값을 처리할 수 있습니다. 이러한 루프를 구성하는 방법은 다음과 같습니다.
($i = 0 ; $i -lt $days.Length ; $i++)
{
$days[$i]
}
array.Length 함수는 기본적으로 배열의 요소 수인 배열의 크기를 반환합니다. 이를 For 루프의 테스트 표현식 매개변수에 연결하여 모든 요소를 포괄적으로 반복할 수 있습니다.
Foreach 루프와 Foreach-object 루프는 더욱 간결한 PowerShell 스크립트를 사용하여 동일한 작업을 수행할 수 있습니다.
Foreach($day($days))
{
$day
}
이렇게 하면 배열 크기를 결정하는 수고가 줄어들고 세부 사항은 PowerShell에서 처리하게 됩니다.
PowerShell 배열을 사용해야 하는 경우
복잡한 스크립트에서 버그의 가장 큰 원인은 잘못 참조된 변수입니다. 이는 고유한 이름의 변수가 너무 많아 해당 목적을 기억하기 어렵기 때문에 발생합니다.
이 문제를 해결하는 가장 간단한 방법은 배열을 광범위하게 사용하는 것입니다. 어떤 방식으로든 관련된 모든 변수는 단일 배열에 할당될 수 있으며 해당 인덱스 번호를 통해 액세스할 수 있습니다.
마이크로소프트 파워셸의 주요 사용 사례는 자동화이며 배열은 자동화에서 중추적인 역할을 합니다. PowerShell cmdlet에서 반환된 개체는 배열에 저장되고 반복될 수 있습니다. 이를 통해 순차적 작업이 자동으로 수행되어 시스템 관리가 크게 단순화됩니다.
.