안녕하세요. RTLog입니다.
오늘은 C Shell Script에서 활용할 수 있는 제어문에 대해 알아보겠습니다.
사용 가능한 제어문은 "if - else", "for - each", "while" ,"switch", "break", "continue", "goto", "exit" 등의 키워드들이 있는데요. C언어와 매우 유사하기 때문에 쉽게 익힐 수 있습니다.
이번 포스트에서는 "if-else"와 "for - each"에 대해서 작성해보겠습니다.
if - else
아래는 사용 예시입니다. ("expression"에는 Ture/False를 나타냄)
1. if (expression) command
2. if (expression) then
command(s)
endif
3. if (expression) then
command(s)
else
command(s)
endif
4. if (expression) then
command(s)
else if (expression) then
command(s)
. . .
else
command(s)
endif
C Shell에는 파일의 존재 유무나 특성을 확인할 수 있는 기능인 File Inquiry Operator를 제공합니다. 아래에 제시된 연산자의 결과는 True/False로, 조건문에서 활용될 수 있습니다.
- 사용법: if ( -operator filename ) or if (! -operator filename )
- operator list
- r : read access (읽을 수 있는가?)
- w : write access (쓸 수 있는가?)
- x : execute access (실행할 수 있는가?)
- e : existence (파일이 있는가?)
- o : ownership (파일의 소유주인가?)
- z : zero length (파일 길이가 0 인가?)
- f : plain file (보통 파일인가?)
- d : directory (디렉토리 파일인가?)
1 # !bin/csh
2 # "Simple Test"
3 echo "number: "
4 set num = $<
5
6 echo -n "Input Number is "
7 echo $num
8
9 if ($num > 10) then
10 echo "Good"
11 else
12 echo "Bad"
13 endif
14 # "Check File Permission"
15 set testfile = $1
16 if (! -e $testfile) then
17 echo “$testfile is not exist”
18 exit
19 endif
20
21 if (-z $testfile) then
22 echo “$testfile is blank file”
23 else if (-f $testfile) then
24 @ mode = 0
25 if (-r $testfile) @ mode += 4
26 if (-w $testfile) @ mode += 2
27 if (-x $testfile) @ mode += 1
28
29 if ($mode == 7) echo “$testfile mode is Read, Write, Execute”
30 if ($mode == 6) echo “$testfile mode is Read, Write”
31 if ($mode == 4) echo “$testfile mode is Read Only”
32
33 else if (-d $testfile) then
34 echo $testfile is directory
35 else
36 echo "$testfile is not plan_file and directory"
37 echo "$testfile is special file"
38 endif
for - each
C Shell에서는 반복을 위해 foreach ~ end 구문을 사용합니다. 제시된 worlist의 개수만큼 반복하는데요. 매 iteration마다 wordlist에 있는 다음 단어를 name에 할당하며 Command를 수행합니다. wordlist는 변수들의 리스트/집합 변수를 사용할 수 있습니다.
foreach name ( wordlist )
command(s)
. . .
end
마찬가지로 File과 관련된 예제 코드를 작성해보겠습니다. 아래의 Shell Script는 인자로 입력받은 경로에 존재하는 폴더 개수와 파일 개수를 세는 동작을 합니다.
1 #!/bin/csh
2 # Usage : numfile [directory]
3
4 if ($#argv == 0) then
5 set dir = "."
6 else
7 set dir = $argv[1]
8 endif
9
10 if (! -d $dir) then
11 echo $0\: $dir not a directory
12 exit 1
13 endif
14
15 echo -n $dir\:
16 @ fcount = 0
17 @ dcount = 0
18
19 cd $dir
20 foreach file (*) # (*) = (`ls`)
21 if (-f $file) then
22 @ fcount++
23 else if (-d $file) then
24 @ dcount++
25 endif
26 end
27
28 echo $fcount files $dcount directories
감사합니다.
'Linux' 카테고리의 다른 글
[Linux] 파일 검색 (1) | 2024.03.26 |
---|---|
[Linux] Process (0) | 2024.03.26 |
[Linux] C Shell Script - Operator (0) | 2024.03.26 |
[Linux] C Shell Script - 사용자 입력, 인자 (0) | 2024.03.26 |
[Linux] C Shell Script - 변수 (0) | 2024.03.26 |