코딩/Linux
[Linux] 흐름제어(if-else, for, case, select, while, until), Exit Status, 조건검사, 파일속성검사, 정수조건검사, 문자열비교
낫띵온미
2022. 10. 21. 01:38
※ Linux Fundamentals 교재를 참고하였습니다!
if / else
if condition
then
statements
[elif condition
then statements]
[else
statements]
fi
- [condition] ; boolen이 아니라 실행가능 명령
- 정상 실행 : 참
- 실행 오류 : 거짓
- 한줄에 적을 경우 if condition; then; statement
Exit Status
- UNIX 명령어는 실행 후 하나의 정수 반환
- exit code
- 정상종료 = 0
- 오류 = 0이 아닌 값
조건 검사 명령
- [ ... ] : 하나의 명령, 참이면 exit status 0, 아니면 1
- 괄호 사이는 반드시 공백문자
- 문자열 비교, 파일 속성 검사
- [ string1 == string2 ]
- test string1 = string2 와 동일 (내장명령어)
- [[ ... ]]
문자열 비교
str1 = str2 | 동일 true |
str1 != str2 | 다르면 true |
str1 < str2 | 사전순 앞서면 true |
-n str1 | str1이 null이 아니면 true |
-z str1 | str1이 null이면 true |
파일 속성 검사
-a/e file | file 존재 |
-d file | 디렉토리 |
-f file | 일반 파일 |
-r/w/x file | 읽기/쓰기/실행 권한 있는 경우 |
-s file | file 존재하며 not empty |
-N file | file 마지막 읽은 이후 변경된 경우 |
file1 -nt file2 | file1이 new than이면 |
file1 -ot file2 | file1이 older than이면 |
정수 조건 검사
-lt | less than |
-le | less or equal |
-eq | equal |
-ge | greater or equal |
-gt | greater than |
-ne | not equal |
복합 조건
- [ ... ] 내부에서 조건 결합
- !expr : 부정
- -a : AND
- -o : OR
for
for var [in list]
do
done
리스트
- 나열 : 1 2 3 4 5 6
- {1..n}
- `seq 1 n` (역따옴`)
- $@ : 입력값 사용
- *.bsh : file 사용
case
case var in
pattern1)
문장;;
pattern2)
문장;;
*) =else
문장;;
esac
- 반복적인 if-then-else 대체
- 문자열과 패턴 비교
select
select var [in list]
do
done
- list의 각 아이템을 숫자와 함께 메뉴로 보여줌
- 사용자에게 메뉴 선택 프롬프트 출력
- var에 선택된 메뉴 저장
- REPLY에 선택된 번호 저장
while, until
while condition
do
done
until condition
do
done