-
[PowerShell 기초] 3. 변수(Variables)Shell & CMD/PowerShell 2021. 12. 5. 10:52반응형
1. Bash vs Powershell
Powershell은 bash 에서 와 달리 변수 선언에 약간 차이가 있다.
먼저 bash를 살펴보겠다.
# 정수형 사용 예시 test=1 # 변수선언 echo $test # 사용예시 결과값 : 1 echo $(($test+$test)) # 사용예시 결과값 : 2 # 문자형 사용 예시 name=ddochea # 변수선언 echo "$name, hello!" # 사용예시 결과값 : ddochea, hello! echo "$name, hello! $test" # 사용예시 결과값 : ddochea, hello! 1 # 배열 사용 예시 arr="1 2 3" # 변수선언 for i in $arr; do echo "$i time visited."; done # 사용예시 결과 # 1 time visited. # 2 time visited. # 3 time visited. for i in $arr; do echo "$(($i+$i)) time visited."; done # 사용예시 결과 2 # 2 time visited. # 4 time visited. # 6 time visited.
반면 Powershell은 아래와 같다.
#정수형 사용 예시 $test=1 # 변수선언 echo $test # 변수 사용예시 결과값 : 1 echo $($test+$test) # 변수 사용예시 결과값 : 2, ($test+$test) 도 사용가능. #문자형 사용 예시 $name='ddochea' # 변수선언. $name="ddochea" 로도 사용가능하다. echo "$name, hello!" # 사용예시 결과값 : ddochea, hello! echo "$name, hello! $test" # 사용예시 결과값 : ddochea, hello! 1 #배열 사용 예시 $arr=1,2,3 # 변수선언 foreach ($i in $arr) { echo "$i time visited."} # 사용예시 결과 1 # 1 time visited. # 2 time visited. # 3 time visited. foreach ($i in $arr) { echo "$($i+$i) time visited."} # 사용예시 결과 2 # 2 time visited. # 4 time visited. # 6 time visited.
얼핏 보면 문법의 차이만 존재할 뿐, bash 대비 powershell의 장점이 보이진 않는다. 하지만 지난 시간에 살펴보았던 것처럼, powershell에는 타입(Type)의 개념이 존재한다.
저장한 변수의 타입(Type)을 확인 2. Type있는 변수 선언
지난번 언급한 것처럼, Powershell은 Type 개념이 존재한다. 변수명 뒤에 .GetType() 함수를 입력하면 변수의 타입을 확인할 수 있다.
저장한 변수의 타입(Type)을 확인 Array의 경우는 단일 변수와 조금 차이점이 있다. 앞서 bash 와의 차이점을 알아보며 생성했던
$arr
변수의 타입을 확인하면 아래와 같이 나올 것이다.Object 배열 형식으로 나오는 $arr 변수 상태 Int[] 형식일 줄 알았는데 Object[]로 나오게 된다. 보다 정확하게 타입을 지정해서 쓰고 싶다면 아래와 같은 방법으로 Array를 선언해야 한다.
[int32[]]$typedArr=1,2,3 #타입을 지정한 배열함수 생성
Int배열 형식으로 나오는 $typedArr 변수 상태 3. Powershell의 Type지원 범위
Powershell 소개 단계에서 Powershell 은 .NET 및 .NET Core를 기반으로 개발되었다고 하였다. 따라서 .NET에서 제공하는 Int, Long, Float 같은 변수 외 제네릭(Generic) 컬렉션과 같은 타입도 사용할 수 있다.
아래 스크립트는 .NET 의 대표적인 제네릭 형식이 List 객체를 선언하는 예시이다.
$list = New-Object System.Collections.Generic.List[int]
.NET 개발자라면 해당 코드가
List<int> list = new();
와 동일하다는 것을 알 수 있다. 사용법도 거의 유사하다.List[int] 사용 예시 또한
Get-Process
cmdlet 을 조합하여 process와 같은 동작 중인 프로그램을 객체로 받을 수도 있다. 그리고 해당 객체의 메소드를 이용해 동작을 수행할 수도 있다.# OS에서 실행중인 notepad 프로세스를 $notepad 변수에 정의 $notepad = Get-Process -Name Notepad
Process 변수 사용 예시 Powershell에선
cmdlet
에서 출력하는 거의 모든 형식을 다 받을 수 있으며, 해당 변수를 입력 값으로 받아 조합하여 사용할 수도 있다.요약
powershell은 bash 와 달리,
Type
형식이 명확하며, .NET 기반의 형식 체계를 사용할 수 있다. 또한cmdlet
의 출력 결과를 변수에 담은 뒤 사용할 수 있다.출처 :
System.Collections.Generic 네임스페이스 | Microsoft Docs
배열 정보 - PowerShell | Microsoft Docs
7. Lists, Arrays, and Hashtables - Windows PowerShell Cookbook, 3rd Edition [Book] (oreilly.com)
반응형'Shell & CMD > PowerShell' 카테고리의 다른 글
[PowerShell 기초] 6. Powershell 프로필 설정 (0) 2021.12.26 [PowerShell 기초] 5. 필터 및 정렬 (0) 2021.12.12 [PowerShell 기초] 4. 연산자(Operator) (0) 2021.12.11 [PowerShell 기초] 2. cmdlet 명령어 기초 (0) 2021.11.28 [PowerShell 기초] 1. 파워셸(Powershell) 이란 (0) 2021.11.28