본문 바로가기
Linux

[Linux] C Shell Script - 제어문(3)

by RTLog 2024. 3. 27.
728x90
반응형

안녕하세요. RTLog입니다.

오늘은 C Shell Script에서 활용할 수 있는 제어문 마지막 편입니다.

흐름 변경(break, continue, goto, exit)

break

 

break문은 swtich문에서도 사용되었는데요. foreach, while, switch문에서 각 구문을 벗어나고자 할 때 사용됩니다. Nested Loop가 사용되었다면, 각 계층에서 한 단계의 Loop만 탈출하게 됩니다. 

while ($condition)
    # Some condition check
    if (some_condition) then
        break
    endif
    # Loop body
end

continue

"continue"문은 반복문에서 현재 iteration을 중단하고, 다음 iteration으로 이동합니다. 주로 특정 조건을 만족할 때, 현재 iteration을 건너뛰고 다음 iteration으로 넘어갈 때 사용됩니다.

foreach item ($list)
    # Some condition check
    if ($item == "skip")
        continue
    endif
    # Process the item
end

goto

"goto" 명령문은 특정 레이블로 분기하고자 할 때 사용합니다.  C Shell Script에서 goto는 보통 사용을 권장되지 않고, 대부분의 경우에 goto 대신에 반복문과 조건문을 사용하여 흐름을 관리합니다. (여러 개의 Loop를 한 번에 빠져나오고자 할 때, 유용할 수 있습니다.)

foreach item ($list)
    foreach subitem ($sublist)
        if ($condition)
            goto end_loop
        endif
    end
end
end_loop:
# Some code after the loop

exit

"exit"은 스크립트 실행을 종료하는 데 사용됩니다. 일반적으로 , exit이 인수 없이 호출되면 스크립트가 성공적으로 종료되었음을 나타냅니다. (종료 코드 0)

 

종료 코드는 실행의 성공 또는 실패에 대한 정보를 전달하는 데 사용됩니다. 일반적으로 상태 코드 0은 성공을 나타내고, 0이 아닌 상태 코드는 일종의 오류/비정상적인 종료를 나타냅니다. 종료 상태 코드를 나타내는 exit에 정수를 함께 작성하여 종료 코드를 보낼 수 있습니다. 

exit 

exit 1

 

+ Recursion

"재귀 함수"라는 용어를 들어보셨을 텐데요. Shell Script도 재귀적으로 구현할 수 있습니다. cp 혹은 rm 명령어를 폴더에 적용할 때, -r option을 추가했었는데요. 이게 바로 Recursion을 나타냅니다. Script 내에서 실행 명령어로 Script 이름을 사용하면 재귀를 구현 할 수 있습니다. Factorial 예제를 확인해보겠습니다. 

 

  1 #!/bin/csh -f
  2
  3 set number = $argv[1]
  4 @ i = $number
  5 @ j = $i - 1
  6
  7 if ($j > 0) then
  8    @ i = $i * `csh factorial.csh $j`
  9    echo $i
 10 else
 11    echo 1
 12 endif
 13
 14 # End of file

output

 

감사합니다. 

728x90
반응형

'Linux' 카테고리의 다른 글

[Linux] C Shell Script - 제어문(2)  (0) 2024.03.27
[Linux] 파일 검색  (1) 2024.03.26
[Linux] Process  (0) 2024.03.26
[Linux] C Shell Script - 제어문(1)  (0) 2024.03.26
[Linux] C Shell Script - Operator  (0) 2024.03.26

let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });