Unix / Linux - Shell Basic Operators
안녕하세요, 야심勃勃한 프로그래머 여러분! Unix/Linux 셸 연산자의 fascineting 세계를 안내해드리게 되어 기쁩니다. 10년 이상 컴퓨터 과학을 가르쳐온 경험을 바탕으로, 이 연산자들을 마스터하면 여러분의 프로그래밍 여정에서 게임 체인저가 될 것이라 확신합니다. 시작해보겠습니다!
Arithmetic Operators
셸 스크립팅에서 수학 연산의 기초가 되는 연산자들입니다. 이들은 우리가 스크립트 내에서 기본 계산을 수행할 수 있게 해줍니다.
다음은 가장 일반적인 수학 연산자들의 표입니다:
연산자 | 설명 | 예제 |
---|---|---|
+ | 덧셈 | expr $a + $b |
- | 뺄셈 | expr $a - $b |
* | 곱셈 | expr $a \* $b |
/ | 나눗셈 | expr $a / $b |
% | 나머지 | expr $a % $b |
= | 할당 | a=$b |
실제 예제를 보겠습니다:
#!/bin/bash
a=10
b=5
echo "덧셈: `expr $a + $b`"
echo "뺄셈: `expr $a - $b`"
echo "곱셈: `expr $a \* $b`"
echo "나눗셈: `expr $a / $b`"
echo "나머지: `expr $a % $b`"
이 스크립트에서 우리는 expr
명령어를 사용하여 수학 연산을 수행하고 있습니다. 백ticks()는
expr` 명령어를 실행하고 그 출력을 치환하는 데 사용됩니다.
이 스크립트를 실행하면 다음과 같은 결과를 볼 것입니다:
덧셈: 15
뺄셈: 5
곱셈: 50
나눗셈: 2
나머지: 0
셸 스크립팅에서 공백은 매우 중요합니다. expr$a+$b
는 작동하지 않지만, expr $a + $b
는 작동합니다. 변수들에게 공기 공간을 주는 것입니다!
Relational Operators
관계 연산자는 값을 비교하는 데 사용됩니다. 스크립트에서 조건을 만드는 데 필수적입니다.
다음은 관계 연산자들의 표입니다:
연산자 | 설명 | 예제 |
---|---|---|
-eq | 같다 | [ $a -eq $b ] |
-ne | 다르다 | [ $a -ne $b ] |
-gt | 크다 | [ $a -gt $b ] |
-lt | 작다 | [ $a -lt $b ] |
-ge | 크거나 같다 | [ $a -ge $b ] |
-le | 작거나 같다 | [ $a -le $b ] |
이제 이들을 실제로 사용해보겠습니다:
#!/bin/bash
a=10
b=20
if [ $a -eq $b ]
then
echo "$a는 $b와 같습니다"
elif [ $a -gt $b ]
then
echo "$a는 $b보다 큽니다"
else
echo "$a는 $b보다 작습니다"
fi
이 스크립트는 a
와 b
를 관계 연산자를 사용하여 비교합니다. 이를 실행하면 다음과 같은 결과를 볼 것입니다:
10은 20보다 작습니다
Tip: 이 연산자들을 질문으로 생각해보세요. "-eq"는 "이거와 같나?"와 같고, "-gt"는 "이거가 저거보다 큰가?"와 같습니다. 스크립트를 작성할 때 이 비교를 구두로 표현해보세요.
Boolean Operators
부울 연산자는 여러 조건을 결합할 수 있게 해줍니다. 스크립트의 논리적이고 중요한 연결물입니다.
다음은 부울 연산자들의 표입니다:
연산자 | 설명 | 예제 |
---|---|---|
! | NOT | [ ! false ] |
-o | OR | [ $a -lt 20 -o $b -gt 100 ] |
-a | AND | [ $a -lt 20 -a $b -gt 100 ] |
이제 이들을 스크립트에서 사용해보겠습니다:
#!/bin/bash
a=10
b=20
if [ $a -lt 20 -a $b -gt 15 ]
then
echo "두 조건 모두 참입니다"
else
echo "적어도 하나의 조건이 거짓입니다"
fi
이 스크립트를 실행하면 다음과 같은 결과를 볼 것입니다:
두 조건 모두 참입니다
부울 연산자는 결정 도구입니다. 여러 요인에 기반하여 스크립트가 선택을 하도록 도와줍니다. 실제 생활과 마찬가지입니다!
String Operators
문자열 연산자는 문자열을 비교하고 조작하는 데 사용됩니다. 텍스트 데이터를 다루는 데 매우 유용합니다.
다음은 문자열 연산자들의 표입니다:
연산자 | 설명 | 예제 |
---|---|---|
= | 같다 | [ $a = $b ] |
!= | 다르다 | [ $a != $b ] |
-z | 문자열이 null | [ -z $a ] |
-n | 문자열이 null이 아님 | [ -n $a ] |
str | 문자열이 비어 있지 않음 | [ $a ] |
이제 이들을 실제로 사용해보겠습니다:
#!/bin/bash
a="Hello"
b="World"
if [ $a = $b ]
then
echo "문자열이 같습니다"
elif [ -z $a ]
then
echo "문자열 a가 비어 있습니다"
elif [ -n $b ]
then
echo "문자열 b가 비어 있지 않습니다"
else
echo "위의 조건 중 아무도 참이 아닙니다"
fi
이 스크립트를 실행하면 다음과 같은 결과를 볼 것입니다:
문자열 b가 비어 있지 않습니다
문자열 연산자는 셸 스크립팅의 문법 규칙과 같습니다. 텍스트를 의미 있게 만들어주는 도구입니다.
File Test Operators
파일 시험 연산자는 다양한 파일 조건을 시험하는 데 사용됩니다. 스크립트가 파일과 디렉토리와 상호작용해야 할 때 필수적입니다.
다음은 일반적인 파일 시험 연산자들의 표입니다:
연산자 | 설명 | 예제 |
---|---|---|
-d file | 디렉토리 존재 | [ -d $file ] |
-f file | 파일 존재하고 일반 파일 | [ -f $file ] |
-r file | 파일이 읽기 가능 | [ -r $file ] |
-w file | 파일이 쓰기 가능 | [ -w $file ] |
-x file | 파일이 실행 가능 | [ -x $file ] |
-s file | 파일이 제로 크기가 아님 | [ -s $file ] |
이제 이들을 스크립트에서 사용해보겠습니다:
#!/bin/bash
file="/etc/passwd"
if [ -f $file ]
then
echo "파일이 존재합니다"
if [ -r $file ]
then
echo "파일이 읽기 가능합니다"
fi
if [ -w $file ]
then
echo "파일이 쓰기 가능합니다"
fi
if [ -x $file ]
then
echo "파일이 실행 가능합니다"
fi
else
echo "파일이 존재하지 않습니다"
fi
이 스크립트를 실행하면 다음과 같은 결과를 볼 수 있습니다:
파일이 존재합니다
파일이 읽기 가능합니다
파일 시험 연산자는 스크립트의 파일 탐정 도구입니다. 스크립트가 파일이 무엇을 할 수 있는지 이해하는 데 도움을 줍니다.
C Shell Operators
C Shell(csh)은 Bourne Shell과 다른 고유한 연산자 집합을 가지고 있습니다. 다음은 몇 가지 예제입니다:
#!/bin/csh
set a = 10
set b = 20
if ($a == $b) then
echo "a는 b와 같습니다"
else if ($a != $b) then
echo "a는 b와 다릅니다"
endif
if ($a > $b) then
echo "a는 b보다 큽니다"
else if ($a < $b) then
echo "a는 b보다 작습니다"
endif
C Shell에서는 ==
를 같다 비교에, !=
를 다르다 비교에 사용합니다. 또한, >
과 <
를 직접 비교에 사용할 수 있습니다.
Korn Shell Operators
Korn Shell(ksh)은 Bourne Shell과 C Shell의 기능을 결합한 것입니다. 다음은 예제입니다:
#!/bin/ksh
a=10
b=20
if ((a == b))
then
print "a는 b와 같습니다"
elif ((a != b))
then
print "a는 b와 다릅니다"
fi
if ((a > b))
then
print "a는 b보다 큽니다"
elif ((a < b))
then
print "a는 b보다 작습니다"
fi
Korn Shell에서는 ((
와 ))
를 사용하여 산술 연산 및 비교를 수행할 수 있어 문법이 깨끗하고 직관적입니다.
기억하세요, 연습이 완벽을 만듭니다! 이 연산자들을 자신의 스크립트에서 실험해보지 마세요. 매번 사용할 때마다 더 편안하고 능숙해질 것입니다. 행복한 스크립팅을!
Credits: Image by storyset