bash if 문 사용 방법
bash if 연산자 사용
1 2 3 4 5 6 7 8 9 |
if [ -e /etc/passwd ] ### /etc/passwd 파일이 존재하면 True if [ -d /tmp ] ### /tmp 디렉토리가 존재하는 경우 True if [ -s /tmp/test.txt ] ### 파일 크기가 0이 아니면 True if [ -z $A ] ### $A의 값의 문자열이 null , 또는 길이가 0이면 True if [ -n $A ] ### #A 의 값의 문자열이 null 아니면 True |
if 산술 비교 연산자
1 2 3 4 5 6 7 8 9 10 11 12 13 |
if [ $A -eq $B ] ### $A $B 값이 같을 경우 True if [ $A -ne $B ] ### $A -ne $B 값이 다를 경우 True if [ $A -gt $B ] ### $A의 값이 $B값보다 큰 경우 True if [ $A -ge $B ] ### $A의 값이 $B값보다 같거나 큰 경우 True if [ $A -ge $B ] ### $A의 값이 $B값보다 크거나 같은 경우 True if [ $A -lt $B ] ### $A의 값이 $B값보다 작은 경우 True if [ $A -le $B ] ### $A의 값이 $B값보다 작거나 같은 경우 True |
문자열 비교
1 2 3 4 5 |
if [ $A = $B ] ### $A의 값과 $B의 문자값이 같은 경우 True if [ $A == $B ] ### $A의 값과 $B의 문자값이 같은 경우 True if [ $A != $B ] ### $A의 값과 $B의 문자값이 다른 경우 True |
1. 파일이 존재하는지 여부 체크 ( -e )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/bash ### -e 파일이 존재하면 True / 존재하지 않으면 False if [ -e /etc/passwd ] then echo " File ok : True " else echo "File none : False" fi ### 결과값 [root@xinet /shell]# sh test.sh File ok : True |
2. 디렉토리 체크 ( -d )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash D="/etc/passwd" ### -d 디렉토리가 존재하면 True / 존재하지 않으면 Flase if [ -d $D ] then echo "Folder OK : True" else echo "Folder none : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh Folder none : False |
실제 디렉토리로 다시 체크해보면 ( 디렉토리명을 명시해주면 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash D="/etc/" ### -d 디렉토리가 존재하면 True / 존재하지 않으면 Flase if [ -d $D ] then echo "Folder OK : True" else echo "Folder none : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh Folder OK : True |
폴더가 없으면 바로 폴더를 생성하는 if문
1 2 3 4 5 6 7 |
#!/bin/bash if [ ! -d /root/test_folder ] then mkdir -p /root/test_folder echo "folder Create " fi |
3. 파일은 존재하는데 크기가 0이 아니면 True ( -s ) / 파일이 존재하지 않거나 또는 파일크기가 0이면 False
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[root@xinet /shell/test]# touch /tmp/test.txt #!/bin/bash A="/tmp/test.txt" if [ -s $A ] then echo "File $A is 파일크기 1이상 : True" else echo "File $A is 파일크기 0 : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh File /tmp/test.txt is 파일크기 0 : False |
/tmp/test.txt 파일에 임의의 데이터값을 넣어주고 다시 실행
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[root@xinet /shell/test]# echo "hello" >> /tmp/test.txt [root@xinet /shell/test]# ls -l /tmp/test.txt -rw-r--r-- 1 root root 6 10월 12 10:33 /tmp/test.txt [root@xinet /shell/test]# vi test.sh #!/bin/bash A="/tmp/test.txt" if [ -s $A ] then echo "File $A is 파일크리 1이상 : True" else echo "File $A is 파일크기 0 : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh File /tmp/test.txt is 파일크리 1이상 : True |
파일이 존재하지 않는 경우 ( 즉 파일이 없으면 값은 False 로 표시가 된다)
1 2 3 4 |
[root@xinet /shell/test]# rm -f /tmp/test.txt [root@xinet /shell/test]# sh test.sh File /tmp/test.txt is 파일크기 0 : False |
4. 문자열이 null / 길이가 0이면 True ( -z )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/bash A="" if [ -z $A ] then echo "$A is 문자열이 Null : True" else echo "$A is 문자열이 있음 : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh is 문자열이 Null : True |
문자열에 값이 존재한다면 False ( -z )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/bash A="HELLO" if [ -z $A ] then echo "$A is 문자열이 Null : True" else echo "$A is 문자열이 있음 : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh HELLO is 문자열이 있음 : False |
5. 문자열이 null 이 아니면 true (-n )
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/bash A="HELLO" if [ -n $A ] then echo "$A is 문자열이 NULL 이 아닙 : True" else echo "$A is 문자열이 NULL : False" fi [root@xinet /shell/test]# sh test.sh HELLO is 문자열이 NULL 이 아닙 : True |
문자열이 null값일 때
1 2 3 4 5 6 7 8 9 |
#!/bin/bash A="" if [ -n $A ] then echo "$A is 문자열이 NULL 이 아닙 : True" else echo "$A is 문자열이 NULL : False" fi |
6. 비교 연산자 : -eq : 값이 같다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/bash A="3" B="3" if [ $A -eq $B ] then echo "$A = $B 같다 : True" else echo "$A , $B 같지않다 : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh 3 = 3 같다 : True |
7. -ne : 값이 같지 않을 경우 True
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash A="3" B="5" if [ $A -ne $B ] then echo "$A = $B 값이 다르다 : True" else echo "$A , $B 값이 같다 : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh 3 = 5 값이 다르다 : True |
8. -gt 값이 더 큰 경우 True
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash A="4" B="3" if [ $A -gt $B ] then echo "A=$A B=$B 값이 크다: True" else echo "$A , $B : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh A=4 B=3 값이 크다: True |
9. -lt 값이 더 작은 경우 True
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash A="2" B="3" if [ $A -lt $B ] then echo "A=$A B=$B 값이 작다: True" else echo "$A , $B : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh A=2 B=3 값이 작다: True |
10. -le 더 작거나 같으면 False
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash A="3" B="3" if [ $A -le $B ] then echo "A=$A B=$B 값이 같거나 작다: True" else echo "$A , $B : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh A=3 B=3 값이 같거나 작다: True |
문자열 비교 : =
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash A="ABC" B="ABC" if [ $A = $B ] then echo "A=$A B=$B 값이 같다 True" else echo "A=$A B=$B 값이 다르다 : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh A=ABC B=ABC 값이 같다 True |
문자열 비교 != / 같지 않으면 True
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash A="ABC" B="CFD" if [ $A != $B ] then echo "A=$A B=$B 값이 다르다 True" else echo "A=$A B=$B 값이 같다 : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh A=ABC B=CFD 값이 다르다 True |
문자열이 서로 다은 경우
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash A="ABC" B="CFD" if [ $A = $B ] then echo "A=$A B=$B 값이 같다 True" else echo "A=$A B=$B 값이 다르다 : False" fi ### 결과값 [root@xinet /shell/test]# sh test.sh A=ABC B=CFD 값이 다르다 : False |