본문 바로가기

IT/power_shell

흐름제어 와 반복문 ( if/while/for/foreach/switch )

반응형

 

오늘은 파워쉘에서 흐름제어 하는 방법을 배워보도록 하겠습니다.

 

파워쉘에서 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 이라고 부릅니다. ) 를 알아보겠습니다.

 

함수 와 타입선언을 해볼까 했는데, 유용할 꺼라 느끼는 부분부터 하는게 좋을것 같아서요~~

 

실제로 파워쉘의 특성상, 커맨드 들과 짧은 제어문을 통한 간단한 스크립트로 훨씬 많이 쓰실꺼로 예상됩니다. 

 

아~!  파이프 (|) 와 리다이렉션 ( >, >> ) 도 사용가능합니다.  이건 다음 시간 커맨드 하면서 같이 하겠습니다.

 

다음시간에 보아요~ 빠이!

반응형