Unix / Linux-쉘 기본 연산자

각 쉘에서 지원하는 다양한 연산자가 있습니다. 이 장에서 Bourne 셸 (기본 셸)에 대해 자세히 설명합니다.

이제 다음 연산자에 대해 설명합니다.

  • 산술 연산자
  • 관계 연산자
  • 부울 연산자
  • 문자열 연산자
  • 파일 테스트 연산자

Bourne 쉘은 원래 간단한 산술 연산을 수행하는 메커니즘이 없었지만 외부 프로그램을 사용합니다. awk 또는 expr.

다음 예제는 두 숫자를 더하는 방법을 보여줍니다-

#!/bin/sh

val=`expr 2 + 2`
echo "Total value : $val"

위의 스크립트는 다음 결과를 생성합니다-

Total value : 4

추가하는 동안 다음 사항을 고려해야합니다.

  • 연산자와 표현식 사이에는 공백이 있어야합니다. 예를 들어, 2 + 2는 올바르지 않습니다. 2 + 2로 작성해야합니다.

  • 완전한 표현식은 ‘ ‘, backtick라고합니다.

산술 연산자

다음 산술 연산자는 Bourne Shell에서 지원됩니다.

변수 가정 a 10 개와 가변 b 20을 보유하고-

예시보기

운영자 기술
+ (추가) 연산자의 양쪽에 값을 추가합니다. `expr $ a + $ b`는 30을 제공합니다.
-(빼기) 왼쪽 피연산자에서 오른쪽 피연산자를 뺍니다. `expr $ a-$ b`는 -10을 제공합니다.
* (곱하기) 연산자의 양쪽에 값을 곱합니다. `expr $ a \ * $ b`는 200을 제공합니다.
/ (나누기) 왼손 피연산자를 오른손 피연산자로 나눕니다. `expr $ b / $ a`는 2를 제공합니다.
% (모듈러스) 왼손 피연산자를 오른손 피연산자로 나누고 나머지를 반환합니다. `expr $ b % $ a`는 0을 제공합니다.
= (과제) 왼쪽 피연산자에 오른쪽 피연산자를 할당합니다. a = $ b는 b의 값을 a에 할당합니다.
== (동등) 두 숫자를 비교하면 둘 다 같으면 true를 반환합니다. [ $a == $b]는 거짓을 반환합니다.
! = (같지 않음) 두 숫자를 비교하면 둘 다 다르면 true를 반환합니다. [ $a != $b]는 true를 반환합니다.

예를 들어 모든 조건식은 대괄호 안에 공백이 있어야한다는 것을 이해하는 것이 매우 중요합니다. [ $a == $b ] 정확하지만, [$a==$b] 부정확하다.

모든 산술 계산은 긴 정수를 사용하여 수행됩니다.

관계 연산자

Bourne Shell은 숫자 값과 관련된 다음과 같은 관계 연산자를 지원합니다. 이러한 연산자는 값이 숫자가 아니면 문자열 값에 대해 작동하지 않습니다.

예를 들어, 다음 연산자는 "10"과 "20"사이뿐만 아니라 10과 20 사이의 관계를 확인하지만 "10"과 "20"사이에는 검사하지 않습니다.

변수 가정 a 10 개와 가변 b 20을 보유하고-

예시보기

운영자 기술
-eq 두 피연산자의 값이 같은지 확인합니다. 그렇다면 조건이 참이됩니다. [ $a -eq $b]가 사실이 아닙니다.
-ne 두 피연산자의 값이 같은지 확인합니다. 값이 같지 않으면 조건이 참이됩니다. [ $a -ne $b]가 참입니다.
-gt 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 큰지 확인합니다. 그렇다면 조건이 참이됩니다. [ $a -gt $b]가 사실이 아닙니다.
-lt 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작은 지 확인합니다. 그렇다면 조건이 참이됩니다. [ $a -lt $b]가 참입니다.
-ge 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 크거나 같은지 확인합니다. 그렇다면 조건이 참이됩니다. [ $a -ge $b]가 사실이 아닙니다.
-le 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작거나 같은지 확인합니다. 그렇다면 조건이 참이됩니다. [ $a -le $b]가 참입니다.

모든 조건식은 주위에 공백이있는 대괄호 안에 있어야한다는 것을 이해하는 것이 매우 중요합니다. 예를 들면[ $a <= $b ] 정확하지만, [$a <= $b] 부정확하다.

부울 연산자

Bourne Shell은 다음 부울 연산자를 지원합니다.

변수 가정 a 10 개와 가변 b 20을 보유하고-

예시보기

운영자 기술
! 이것은 논리적 부정입니다. 이것은 참 조건을 거짓으로 바꾸고 그 반대의 경우도 마찬가지입니다. [! false]는 true입니다.
-o 이것은 논리적이다 OR. 피연산자 중 하나가 참이면 조건이 참이됩니다. [ $a -lt 20 -o $b -gt 100]이 참입니다.
-a 이것은 논리적이다 AND. 두 피연산자가 모두 참이면 조건은 참이되고 그렇지 않으면 거짓이됩니다. [ $a -lt 20 -a $b -gt 100]은 거짓입니다.

문자열 연산자

다음 문자열 연산자는 Bourne Shell에서 지원됩니다.

변수 가정 a "abc"및 변수 보유 b "efg"를 누른 다음-

예시보기

운영자 기술
= 두 피연산자의 값이 같은지 확인합니다. 그렇다면 조건이 참이됩니다. [ $a = $b]가 사실이 아닙니다.
!= 두 피연산자의 값이 같은지 확인합니다. 값이 같지 않으면 조건이 참이됩니다. [ $a != $b]가 참입니다.
-z 주어진 문자열 피연산자 크기가 0인지 확인합니다. 길이가 0이면 true를 반환합니다. [-z $ a]는 사실이 아닙니다.
-n 주어진 문자열 피연산자 크기가 0이 아닌지 확인합니다. 길이가 0이 아니면 true를 반환합니다. [-n $ a]는 거짓이 아닙니다.
str 확인 str빈 문자열이 아닙니다. 비어 있으면 false를 반환합니다. [$ a]는 거짓이 아닙니다.

파일 테스트 연산자

Unix 파일과 관련된 다양한 속성을 테스트하는 데 사용할 수있는 몇 가지 연산자가 있습니다.

변수 가정 file 크기가 100 바이트 인 기존 파일 이름 "test"를 보유하며 read, writeexecute -에 대한 허가

예시보기

운영자 기술
-b file 파일이 블록 특수 파일인지 확인합니다. 그렇다면 조건이 참이됩니다. [-b $ file]은 거짓입니다.
-c file 파일이 문자 특수 파일인지 확인합니다. 그렇다면 조건이 참이됩니다. [-c $ file]은 거짓입니다.
-d file 파일이 디렉토리인지 확인합니다. 그렇다면 조건이 참이됩니다. [-d $ file]이 사실이 아닙니다.
-f file 파일이 디렉토리 나 특수 파일이 아닌 일반 파일인지 확인합니다. 그렇다면 조건이 참이됩니다. [-f $ file]이 참입니다.
-g file 파일에 SGID (Set Group ID) 비트가 설정되어 있는지 확인합니다. 그렇다면 조건이 참이됩니다. [-g $ file]은 거짓입니다.
-k file 파일에 고정 비트가 설정되어 있는지 확인합니다. 그렇다면 조건이 참이됩니다. [-k $ file]은 거짓입니다.
-p file 파일이 명명 된 파이프인지 확인합니다. 그렇다면 조건이 참이됩니다. [-p $ file]은 거짓입니다.
-t file 파일 설명자가 열려 있고 터미널과 연결되어 있는지 확인합니다. 그렇다면 조건이 참이됩니다. [-t $ file]은 거짓입니다.
-u file 파일에 SUID (Set User ID) 비트가 설정되어 있는지 확인합니다. 그렇다면 조건이 참이됩니다. [-u $ file]은 거짓입니다.
-r file 파일을 읽을 수 있는지 확인합니다. 그렇다면 조건이 참이됩니다. [-r $ file]이 참입니다.
-w file 파일이 쓰기 가능한지 확인합니다. 그렇다면 조건이 참이됩니다. [-w $ file]이 참입니다.
-x file 파일이 실행 가능한지 확인합니다. 그렇다면 조건이 참이됩니다. [-x $ file]이 참입니다.
-s file 파일 크기가 0보다 큰지 확인합니다. 그렇다면 조건이 참이됩니다. [-s $ file]이 참입니다.
-e file 파일이 존재하는지 확인합니다. 파일이 디렉토리이지만 존재하는 경우에도 참입니다. [-e $ file]이 참입니다.

C 쉘 연산자

다음 링크는 C 쉘 연산자에 대한 간략한 아이디어를 제공합니다.

C 쉘 연산자

Korn 쉘 연산자

다음 링크는 Korn 쉘 연산자를 이해하는 데 도움이됩니다.

Korn 쉘 연산자