안녕하세요. 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
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
감사합니다.
'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 |