오늘은 파워쉘에서 흐름제어 하는 방법을 배워보도록 하겠습니다.
파워쉘에서 if 문은 비교 연산자가 특이합니다. 물론 unix 스크립트 문을 써보신분은 익숙하겠지만..
흔히 아는 == , !=, >, < 가 아닌
-eq, -ne, -gt, -lt 을 씁니다.
$x = 10
if( $x -gt 100 ){
"100 보다 크다 "
}elseif( $x -gt 50 ){
"50 보다 크다 "
}else{
"열심히 살자"
}
두글자 의 영문자들은 각각
eq : equal
ne : not equal
gt : greater than
lt : less than
를 뜻합니다. 이걸 생각하면 외우기 쉬울꺼에요~~
다음은 while 문입니다.
위의 부호만 잘익히시면, 반복문들은 쉽습니다.
1 부터 100 까지 더하는것을 예로 들어보죠.
$val = 0
$sum=0
while($val -eq 100){
$sum += ++$val
}
$sum
참쉽죠?
for 문도 바로 이어서 해봅시다.
for($i=0 ; $i -lt 10 ; $i++ ){
$i
}
또한 현대적인(?) 언어인 파워쉘이기 때문에 foreach 도 가능합니다.
그리고 .. 연산자도 가능해서 다음과 같이 사용 가능합니다.
foreach ( $i in 1..10 ) { $i }
마지막으로 switch 입니다.
switch 는 단순하게 사용 하는것 부터 시작해서, 문자열도 가능하고 와일드카드에 심지어 정규표현식까지
사용 가능합니다.
#일반
switch (2) { 1 { "One" } 2 { "two" } default {"default"} }
#문자열
switch ('abc') {'abc' {"one"} 'ABC' {"two"}}
#와일드카드
switch -wildcard ('abc') {a* {"astar"} *c {"starc"}}
#정규표현식
switch -regex ('abc') {^a {"a*: $_"} 'c$' {"*c: $_"}}
#조건문 쓰기
switch (5) {
{$_ -gt 3} {"greater than three"}
{$_ -gt 7} {"greater than 7"}}
#배열값 입력
switch(1,2,3,4,5,6) {
{$_ % 2} {"Odd $_"; continue}
4 {"FOUR"}
default {"Even $_"}
}
switch 의 엄청난 기능들이 놀랍더군요.. 오호..
$_ 이것도 unix 스크립트를 하신분은 익숙하시죠? 바로 입력 인자를 뜻하는 문구 입니다.
다양한 표현식들을 보면, 파워쉘이 웬지 perl 의 개념을 가져왔다고 느껴지게 합니다.
파이썬 같이, 하나의 확실한 해결책이 아닌 여러 해결방법을 자유롭게 생각할 수 있게한 펄~!
과 연장선상에 있는 듯한 파워쉘~ 개인적으로 이게 마음에 들어서 계속 공부 중입니다.
다음 시간에는 파워쉘 내의 커맨드 ( cmdlet 이라고 부릅니다. ) 를 알아보겠습니다.
함수 와 타입선언을 해볼까 했는데, 유용할 꺼라 느끼는 부분부터 하는게 좋을것 같아서요~~
실제로 파워쉘의 특성상, 커맨드 들과 짧은 제어문을 통한 간단한 스크립트로 훨씬 많이 쓰실꺼로 예상됩니다.
아~! 파이프 (|) 와 리다이렉션 ( >, >> ) 도 사용가능합니다. 이건 다음 시간 커맨드 하면서 같이 하겠습니다.
다음시간에 보아요~ 빠이!