bash 스크립트 비교연산자 if문 사용법 while문
리눅스를 운영하다보면 쉘 스크립트를 해야 할 경우가 발생합니다. 하지만 전문적으로 이 분야에게 일하는 사람이 아니라면 명령어나 문법이 생각이 나지 않을 경우가 많습니다.
간단한 프로그램을 만들 경우 쉘 스크립트를 이용하는 경우가 있는데요.
비교연산자와 if문에 대해 알아보도록 할게요.
쉘에서 시간을 가지고 온 후 지정된 시간이 되면 작동하는 프로그램을 살펴보도록 할게요.
while true
do
H=`date +%H`
if [ $H -ge 22 ]; then
내용 ~~~
fi
done
위 소스는 22시간이 이상이 되면 작동하는 소스입니다.
ge는 크거나 같음을 뜻합니다.
연산자 | 의미 | 표현 |
-eq | (같음) | if [ $a -eq $b ] |
-ne | (같지 않음) | if [ $a -ne $b ] |
-gt | (보다 큼) | if [ $a -gt $b ] |
-ge | (크거나 같음) | if [ $a -ge $b ] |
-lt | (보다 작음) | if [ $a -lt $b ] |
-le | (작거나 같음) | if [ $a -le $b ] |
> | (보다 큼) | (($a > $b)) |
>= | (크거나 같음) | (($a >= $b)) |
< | (보다 작음) | (($a < $b)) |
<= | (작거나 같음) | (($a <= $b)) |
연산자 | 의미 | 표현 |
= | (같음) | if [ "$a" = "$b" ] |
== | (같음) | if [ "$a" == "$b" ] |
!= | (같지 않음) | if [ "$a" != "$b" ] |
-z | (문자열이 "null"임. 길이가 0) | if [ -z "$a" ] |
! -z | (문자열이 "null"이 아님.) | if [ ! -z "$a" ] |
-n | (문자열이 "null"이 아님.) | if [ -n "$a" ] |
> | (ASCII값이 보다 큼.) | if [[ "$a" > "$b" ]] if [ "$a" \> "$b" ] |
< | (ASCII값이 보다 작음.) | if [[ "$a" < "$b" ]] if [ "$a" \< "$b" ] |
참고 |
|
|
[[ "$a" == a* ]] | $a 가 "a"로 시작하면 참 (패턴 매칭) | |
[[ "$a" == "a*" ]] | $a 가 "a*" 와 같다면 참 | |
[ "$a" == a* ] | 잘못된 표현 | |
[ "$a" == "a*" ] | $a 가 "a*" 와 같다면 참 |
[ 복합 비교 ]
연산자 | 의미 | 표현 |
-a | (논리 and) | if [ $a -eq 0 -a $b -eq 1 ] |
-o | (논리 or) | if [ $a -eq 0 -o $b -eq 1 ] |
&& | (논리 and) | if [ $a -eq 0 ] && [ $b -eq 1 ] if [[ $a -eq 0 && $b -eq 1 ]] |
|| | (논리 or) | if [ $a -eq 0 ] || [ $b -eq 1 ] if [[ $a -eq 0 || $b -eq 1 ]] |
연산자 | 의미 | 표현 |
-d | Directory | if [ -d FILE ] |
-f | File | if [ -f FILE ] |
-e | Exist | if [ -e FILE ] |
-r | Readable | if [ -r FILE ] |
-w | Writable | if [ -w FILE ] |
-x | Execuable | if [ -x FILE ] |
-s | if [ -s FILE ] | |
-O | Same Owner | if [ -O FILE ] |
-G | Same Group | if [ -G FILE ] |
-nt | Newer Than | if [ FILE1 -nt FILE2 ] |
-ot | Older Than | if [ FILE1 -ot FILE2 ] |