안녕하세요. RTLog입니다.
오늘은 C Shell Script에서 Operator를 사용하는 방법에 대해 작성해보겠습니다.
C Shell Script - Operator
C Shell에서는 산술/논리/비트/문자열 연산을 수행할 수 있습니다.
C Shell에서는 변수 값을 string으로 저장하고, 연산 시에 숫자로 변환하는 과정을 반복하기 때문에 시간 소요가 크고, 실수 연산도 불가능한 단점이 있습니다. 연산이 빈번하게 일어나는 Script를 작성해야 하는 경우, 다른 언어를 사용하는 것이 좋을 수 있습니다.
산술 연산자
사용법: @ variable_name operator expression
주의 사항
- @와 variable_name 사이에는 반드시 "공백"을 넣어야 한다.
- =,+,-,+=,-=,*=,/= 의 앞 뒤에는 반드시 "공백"이 있어야 한다.
- 변수 이름과 ++ 또는 -- 사이에는 "공백"이 있어서는 안된다.
- @ variable_name[index] = expression 과 같이 목록 변수를 사용할 수 있다
- @ 연산자를 문자열 데이터와 함께 사용할 수 없다.
1 #!/bin/csh
2
3 set num=3 # @ num = 3
4
5 @ num += 6
6 echo $num
7 @ num -= 5
8 echo $num
9 @ num *= 8
10 echo $num
11 @ num /= 5
12 echo $num
13 @ num %= 4
14 echo $num
15 @ num++
16 echo $num
17 @ num--
18 echo $num
19
20 echo " "
21 @ num = 20
22 @ r = $num + 6
23 echo $r
24 @ r = $num - 3
25 echo $r
26 @ r = $num * 5
27 echo $r
28 @ r = $num / 6
29 echo $r
30 @ r = $num % 6
31 echo $r
32
33 echo " "
34
35 set int_set = (1 2 3)
36
37 echo $int_set[1]
38
39 @ int1 = $int_set[1] + 1
40 echo $int1
41
42 @ int2 = $int_set[2] + 1
43 echo $int2
44
45 @ int3 = $int_set[3] + 1
46 echo $int3
비트 & 논리 연산자
1. bit 연산에서 빈자리는 "0"으로 채워진다.
2. >>, <<, &, |, ^ 연산자를 포함하는 식은 반드시 "괄호"로 묶어야 한다.
* 연산자가 아닌 입출력 재지정, 후위 작업, 파이프 등의 부호로 인식될 수 있기 때문
Bitwise shift operator : >> (shift right), << (shift left)
Bitwise unary operator : ~ (1's complement), ! (logic negation)
Bitwise logic operator : | (OR), ^ (XOR), & (AND)
Logical operator : || (logic OR), && (logic AND)
1 @ aa = 20
2 @ bb = (~ $aa)
3 echo $bb
4
5 @ aa = 25
6 @ bb = (! $aa)
7 echo $bb
8
9 @ bb = (! (! $aa))
10 echo $bb
11
12 @ aa = 5
13 @ bb = ($aa << 1)
14 echo $bb
15
16 @ bb = ($aa << 4)
17 echo $bb
비교 연산자
C Shell에는 숫자, 문자열, pattern의 세 가지 형태의 자료에 대한 비교 연산이 가능합니다.
1. 숫자 비교 연산자 : ==, !=, >, >=, <, <=
2. 문자열 비교 연산자 : ==, !=
3. Pattern matching 연산자 : =~, !~
- 확장을 적용한 비교 2024.03.13 - [Linux] - [Linux] Wild Card
- * : Match any string(including null)
- [ ] : Define a character set
- ? : Match a single character
* 연산자를 포함하는 식은 반드시 "괄호"로 묶어야 한다.
1 set num = 5
2
3 @ result = ($num == 5)
4 echo $result
5 @ result = ($num != 5)
6 echo $result
7 @ result = ($num > 3)
8 echo $result
9 @ result = ($num >= 3)
10 echo $result
11 @ result = ($num < 3)
12 echo $result
13 @ result = ($num <= 3)
14 echo $result
15
16 set str = xyz
17 @ result = ($str == xyz)
18 echo $result
19
20 set pat = abc
21 @ result = ($str != abc)
22 echo $result
23 @ result = ($pat =~ [abc]*)
24 echo $result
25 @ result = ($pat !~ *c)
26 echo $result
Reference
http://coffeenix.net/doc/shell_programming/shell346.html#3.4
'Linux' 카테고리의 다른 글
[Linux] Process (0) | 2024.03.26 |
---|---|
[Linux] C Shell Script - 제어문(1) (0) | 2024.03.26 |
[Linux] C Shell Script - 사용자 입력, 인자 (0) | 2024.03.26 |
[Linux] C Shell Script - 변수 (0) | 2024.03.26 |
[Linux] Permission (0) | 2024.03.15 |