if 문
지정된 명령어를 실행하여 종료상태가 0 이면 참으로 판단하고 그 외에는 거짓으로 판단
셸 스크립트 예시
if-bin.sh
#!/bin/bash
if [ "$1" = "bin" ]; then # 해석 : 커맨드 라인에서 인자 1이 "bin" 이면 OK 출력
echo "OK"
ellif [ "$1" = "hello" ]; then
echo "Hello"
else
echo "NG"
fi
▶ if 뒤에는 조건문이 아닌 명령어들
▶ [ 가 명령어 : [ 뒤에 오는 "$1", "bin", ] 모두 명령어 [ 의 인자
▶ 문법상의 주의점
띄어쓰기
- [ ] 안의 문자열 간의 공백 필수
- if 와 [ 사이에 공백
- if [ ] 후에 세미콜론(;)
사용
$ ./if-bin.sh "bin"
OK
● 명령어의 종료상태 확인 코드
$ echo $? # 직전에 사용한 명령어의 종료 상태 출력
▶ 종료 상태면 0, 에러가 발생하면 0 이외의 값 출력
$ [ "$1" = "bin" ] # 조건식 명령어 실행 : 참이면 0, 아니면 0 이외의 값
$ echo $?
1 # 조건식 뒤에 아무 값이 없으므로 1 출력
▶ if 문도 참이면 0, 에러가 발생하면 0 이외의 값 출력
#!/bin/bash
if [ -z "$1" ]; then
exit 1
fi
▶ exit 를 이용하여 출력할 종료상태를 지정
● test 명령어
if [ "$1" = "bin" ]; then
if test "$1" = "bin"; then
▶ 둘 다 같은 의미를 지님
● 연산자
문자열 비교
연산자 | 내용 |
str1 = str2 | str1 과 str2 가 같음 |
str1 != str2 | 같지 않음 |
-n str1 | 빈 문자열이 아님 |
-z str1 | 빈 문자열임 → 빈 문자열이면 참 |
정수 비교 - 오직 정수만 다룸
연산자 | 내용 |
1 -eq 2 | 같다 |
1 -ne 2 | 같지 않다 |
1 -lt 2 | < , 1 이 2 보다 작음 |
1 -le 2 | ≤ , 1 이 2 이하임 |
1 -gt 2 | > , 1 이 2 보다 큼 |
1 -ge 2 | ≥ , 1이 2 이상임 |
파일 속성
연산자 | 내용 |
-e < file 명> | < file 명> 존재 |
-d < file 명> | < file 명> 존재하고 디렉터리임 |
-h < file 명> | < file 명> 존재하고 심볼릭 링크임 |
-L < file 명> | < file 명> 존재하고 심볼릭 링크임 |
-f < file 명> | < file 명> 존재하고 일반 파일임 |
-r < file 명> | < file 명> 존재하고 읽기 권한이 부여되어 있음 |
-w < file 명> | < file 명> 존재하고 쓰기 권한이 부여되어 있음 |
-x < file 명> | < file 명> 존재하고 실행 권한이 부여되어 있음 |
< file 명1 > -nt < file 명 2 > | < file 명 1 > 의 변경 시각이 < file 명 2> 보다 최근임 |
< file 명 1 > -ot < file 명 2 > | < file 명 1 > 의 변경 시작이 < file 명 2 > 보다 오래됨 |
결합 연산자
연산자 | 내용 |
조건식 1 -a 조건식2 | 두 조건식이 참이면 참 (and) |
조건식 1 -o 조건식2 | 두 조건식중 하나가 참이면 참(or) |
! 조건식 | 조건식의 진위값을 반대로 함(not) |
() | 조건식을 그룹화 |
● && 와 ||
명령어 1 && 명령어 2 : 명령어 1이 정상종료하여야 명령어2를 실행
$ [ -f file.txt ] && cat file.txt
명령어 1 || 명령어 2 : 명령어 1이 정상종료하지 않아야 명령어2를 실행
$ [ -f file.txt ] || touch file.txt
'책 > 모두의 리눅스' 카테고리의 다른 글
[ 책 ] [ 모두의 리눅스 ] 16장 제어구조 case (0) | 2024.04.10 |
---|---|
[ 책 ] [ 모두의 리눅스 ] 16장 제어구조 for (0) | 2024.04.10 |
[ 책 ] [ 모두의 리눅스 ] 16장 셸 스크립트 작성법 (0) | 2024.04.09 |
[ 책 ] [ 모두의리눅스 ] 15장 셸 스크립트 작성 (0) | 2024.04.07 |
[ 책 ] [ 모두의 리눅스 ] 14장 : awk (오크) : 패턴 검색 및 처리 (0) | 2024.04.06 |