728x90
반응형
if 조건문 (if, elif, else, then, fi)
if문 문법
if [Command]; then
[실행문장]
elif [Command]; then
[실행문장]
else
[실행문장]
fi
- 자바, C언어는 조건문이 1일 때 True 지만, Bash Shell은 0일 때 True 나머지 False.
- Bash Shell의 if문은 조건이 아닌 Command 즉 명령을 받음
if 예시1)
Command가 실행되면 Success 없으면 Fail
if 예시2)
입력 받은 Command가 실행되면 Success 없으면 no command
if 예시3)
- shell script의 if는 명령이 잘 실행되면 "참" 명령이 실행되지 않으면 "거짓"
- 따라 명령어 실행 성공여부가 아닌 명령 처리 결과를 알고 싶어도 알 수가 없음
- 해당 명령어(find ./ -type f -name def)는 def의 파일을 찾는 명령어
- ls 확인 결과 def의 파일은 없음
- def 파일의 유무를 원하지만 명령어가 잘 실행됨을 알려줌
- 따라 def 파일이 존재하는지(명령 처리 결과)를 알 수가 없음
명령 처리 결과를 알고 싶을 때
- test "명령어" or ["명령어"] 대괄호 사용
- abc 파일은 존재하고, def 파일은 미존재
- 명령어 실행 결과가 아닌 명령어가 처리된 결과가 출력 됨
조건문 옵션
옵션 | 설명 |
-eq | 값이 같으면 참 |
-ne | 값이 다르면 참 |
-gt | A > B |
-ge | A >= B |
-lt | A < B |
-le | A <= B |
-z | 문자열 길이가 0이면 참 |
-n | 문자열 길이가 0이 아니면 참 |
-a | &&, and 연산 |
-o | ||, or 연산 |
-d | 파일이 디렉토리면 참 |
-e | 파일이 있으면 참 |
-L | 파일이 심볼릭 링크면 참 |
-r | 파일이 읽기 가능하면 참 |
-w | 파일이 쓰기 가능하면 참 |
-x | 파일이 실행 가능하면 참 |
-s | 파일 크기가 0보다 크면 참 |
일부 문자열 비교 ( =~ )
문법
if [[ "문자열" =~ "비교 문자" ]] ; then
[실행문장]
fi
- =~ 비교 기호 사용
- [[ ]] 대괄호 두개 사용
if 예시4)
- 입력된 문자열에 'a'가 존재 유무 확인
else 조건문 (case, in, esac)
case문 문법
case [변수] in
1) [case1] ;;
2) [case2] ;;
3) [case3] ;;
*) [last case] ;;
esac
- " *) " 은 case 1, case 2, case 3 모두 아닐 경우 수행
- "esac" 는 case 문법 종료를 알림
case 예시1)
case 예시2)
728x90
'*Programming > [ SS ] Shell Script' 카테고리의 다른 글
[SS - 09] 반복문 (for, do, in) (0) | 2021.12.27 |
---|---|
[SS - 08] 주석 달기 (#, :<<'END') (0) | 2021.12.18 |
[SS - 06] 사직연산(expr) (0) | 2021.12.18 |
[SS - 05] 사용자 입력 값 받기 (read) (0) | 2021.12.18 |
[SS - 04] 명령어 실행 (` `, $( )) (0) | 2021.12.18 |