Unix / Linux - Shell Basic Operators

안녕하세요, 야심勃勃한 프로그래머 여러분! Unix/Linux 셸 연산자의 fascineting 세계를 안내해드리게 되어 기쁩니다. 10년 이상 컴퓨터 과학을 가르쳐온 경험을 바탕으로, 이 연산자들을 마스터하면 여러분의 프로그래밍 여정에서 게임 체인저가 될 것이라 확신합니다. 시작해보겠습니다!

Unix / Linux - Basic Operators

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

이 스크립트는 ab를 관계 연산자를 사용하여 비교합니다. 이를 실행하면 다음과 같은 결과를 볼 것입니다:

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