본문 바로가기
Linux

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

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

안녕하세요. RTLog입니다.

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

while

while은 expression이 참인 동안 commands를 반복합니다. while문을 빠져나오는 조건은 expression이 거짓이 되거나, break문을 만나는 경우입니다. 

 

- 사용법

    while (expression)
       command(s)
       . . .
    end

 

간단한 예제로, 두 개의 수를 입력받아 작은 수부터 큰 수까지의 합을 출력하는 Script입니다. 

  1 #!/bin/csh -f
  2
  3 if ($#argv < 2) then
  4    echo “add_count number1 number2”
  5    exit
  6 endif
  7
  8 if ($1 < $2) then
  9    set num1 = $1
 10    set num2 = $2
 11 else
 12    set num1 = $2
 13    set num2 = $1
 14 endif
 15
 16 set count = $num1
 17 while ($count <= $num2)
 18    @ sum += $count
 19    @ count += 1
 20 end
 21
 22 echo “The sum of from $num1 to $num2 are $sum”
 23
 24 # End of file

output

 

for - each 문은 wordlist의 내용을 차례로 접근하여 Command를 실행했었는데요. while문에서도 "shift" 구문을 이용하여 유사한 동작을 할 수 있습니다.

 

shift를 통해 목록/집합 변수의 원소에 차례로 접근할 수 있습니다. shift를 수행할때마다, 첫번째 원소를 삭제하고 두번째 이상의 원소들을 앞으로 한 칸씩 옮겨옵니다. 또한, $#var_name 값이 1씩 줄어듭니다. (variable name 없이 shift를 사용하면 argv를 가지고 shift를 수행합니다.)

 

- 사용법

shift [variable_name]

 

아래는 Script의 인자를 Shift를 사용하여 하나씩 출력하는 예제입니다. 

  1 #!/bin/csh
  2
  3 # Check if there are any arguments provided
  4 if ($#argv == 0) then
  5     echo "Usage: $0 argument1 argument2 ..."
  6     exit 1
  7 endif
  8
  9 echo "Printing arguments using while and shift:"
 10
 11 # Loop through each argument using while and shift
 12 while ($#argv > 0)
 13     echo "Argument: $argv[1]"
 14     shift
 15 end

Switch

Switch 구문은 switch ~ endsw 사이에 case 구문을 사용하여 각각의 case에 따른 실행 명령을 수행합니다. 각각의 case는 case ~ breaksw로 구분합니다.  string에는 명령, 파일 이름, 변수 등이 올 수 있습니다. String과 각 case의 pattern을 비교하여 일치하는 case에 대한 command를 실행합니다. 일치하는 pattern이 없다면 default의 명령을 실행하고 종료합니다. 

 

 - 사용법

    switch (string)
       case pattern1:
         command(s)
          . . .
          breaksw
       case pattern2:
          command(s)
          breaksw
       . . .
       default:
          command(s)
          breaksw
    endsw

 

옵션을 체크하는 방법으로 사용될 수 있는데요. 예제는 아래와 같습니다. 

  1 #!/bin/csh
  2
  3 # Default values
  4 set option_a = 0
  5 set option_b = 0
  6 set option_c = 0
  7
  8 # Process command line options
  9 while ($#argv > 0)
 10     switch ($argv[1])
 11         case -a:
 12             set option_a = 1
 13             breaksw
 14         case -b:
 15             set option_b = 1
 16             breaksw
 17         case -c:
 18             set option_c = 1
 19             breaksw
 20         default:
 21             echo "Unknown option: $argv[1]"
 22             exit 1
 23     endsw
 24     shift
 25 end
 26
 27 # Output the selected options
 28 echo "Selected options:"
 29 if ($option_a == 1) then
 30     echo "-a option is selected"
 31 endif
 32 if ($option_b == 1) then
 33     echo "-b option is selected"
 34 endif
 35 if ($option_c == 1) then
 36     echo "-c option is selected"
 37 endif

output

 

감사합니다. 

728x90
반응형

'Linux' 카테고리의 다른 글

[Linux] C Shell Script - 제어문(3)  (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'); });