본문 바로가기

[OS]Operating System/[Linux]

[Linux] IF문

728x90
반응형

if문 구조

if [[ 조건식 ]]; then
    수행문
fi

 

if문의 조건문

[ -z ] : 문자열의 길이가 0이면 참
[ -n ] : 문자열의 길이가 0이 아니면 참

[ -eq ] : 값이 같으면 참
[ -ne ] : 값이 다르면 참
[ -gt ] :  값1 > 값2
[ -ge ] : 값1  >= 값2
[ -lt ] : 값1 < 값2
[ -le ] : 값1 <= 값2

[ -a ] : &&연산과 동일 and 연산
[ -o ] : ||연산과 동일 xor 연산

[ -d ] : 파일이 디렉토리면 참
[ -e ] : 파일이 있으면 참
[ -L ] : 파일이 심볼릭 링크면 참
[ -r ] : 파일이 읽기 가능하면 참
[ -s ] : 파일의 크기가 0 보다 크면 참
[ -w ] : 파일이 쓰기 가능하면 참
[ -x ] : 파일이 실행 가능하면 참
[ 파일1 -nt 파일2 ]  : 파일1이 파일2보다 최신파일이면 참
[ 파일1 -ot 파일2 ]  : 파일1이 파일2보다 이전파일이면 참
[ 파일1 -ef 파일2 ] : 파일1이 파일2랑 같은 파일이면 참

 

문자열 비교 옵션

문자열을 비교하거나 문자열 자체를 조건으로 사용한다.
옵션 사용법 설명
없음 if [[ 문자 ]] 빈 문자열이 아니면 참이다.
= 또는 == if [[ 문자 = 문자 ]] 두 문자열이 같으면 참이다.
!= if [[ 문자 != 문자 ]] 두 문자열이 같지 않으면 참이다.
-n if [[ 문자 -n 문자 ]] 문자열이 null이 아니면 참이다.
-z if [[ 문자 -z 문자 ]] 문자열이 null이면 참이다.

 

산술 비교 옵션

두 수의 값을 비교한다.
옵션 연산자 사용법 설명
-eq = if [[ 값1 -eq 값2 ]] 두 값이 같으면 참이다.
-ne != if [[ 값1 -ne 값2 ]] 두 값이 다르면 참이다.
-gt > if [[ 값1 -gt 값2 ]] 값1이 값2보다 크면 참이다.
-ge >= if [[ 값1 -ge 값2 ]] 값1이 값2보다 크거나 같으면 참이다.
-lt < if [[ 값1 -lt 값2 ]] 값1이 값2보다 작으면 참이다.
-le <= if [[ 값1 -le 값2 ]] 값1이 값2보다 작거나 같으면 참이다.
-a and if [[ 조건1 -a 조건2 ]] 조건1과 조건2가 모두 참이면 참이다.
-o or if[[ 조건1 -o 조건2 ]] 조건1과 조건2 중 하나만 참이어도 참이다.

 

산술 비교의 예시

if [[ 1 -eq 1 -a 1 -eq 1 ]]; then
	echo yes
else
	echo no
fi

if [[ 1 -eq 1 ]] && [[ 1 -eq 1 ]]; then
	echo yes
else
	echo no
fi

 

파일 조건 옵션

파일 존재 여부 또는 파일에 대한 속성값을 조건문으로 사용한다.
옵션 사용법 설명
-b if [[ -b 파일 ]] 파일이 블럭 디바이스면 참이다.
-c if [[ -c 파일 ]] 파일이 문자 디바이스면 참이다.
-d if [[ -d 파일 ]] 파일이 디렉토리면 참이다.
-e if [[ -e 파일 ]] 파일이 존재하면 참이다.
-f if [[ -f 파일 ]] 파일이 존재하고 정규 파일이면 참이다.
-g if [[ -g 파일 ]] 파일이 setgid이면 참이다.(파일 그룹 실행권한에 s가 있는 경우)
-G if [[ -G 파일 ]] 파일의 그룹이 현재 사용자 그룹이면 참이다.
-h if [[ -h 파일 ]] 파일이 하드링크이면 참이다.
-k if [[ -k 파일 ]] 파일이 Sticky bit이면 참이다.(파일 다른 사용자 실행권한에 T가 있는 경우)
-L if [[ -L 파일 ]] 파일이 심볼릭 링크이면 참이다.
-O if [[ -O 파일 ]] 파일의 소유자가 현재 사용자이면 참이다.
-p if [[ -p 파일 ]] 파일 속성이 파이프이면 참이다.(prw-r--r--)
-r if [[ -r 파일 ]] 현재 사용자가 읽을 수 있는 파일이면 참이다.
-s if [[ -s 파일 ]] 파일이 비어있지 않으면 참이다.
-S if [[ -S 파일 ]] 파일이 소켓 디바이스이면 참이다.
-t if [[ -t FD ]] FD(File Descriptor)가 열린 터미널이면 참이다.
-u if [[ -u 파일 ]] 파일이 setuid이면 참이다.(파일 소유자 실행권한에 s가 있는 경우)
-w if [[ -w 파일 ]] 현재 사용자가 write할 수 있는 파일이면 참이다.
-x if [[ -x 파일 ]] 현재 사용자가 실행할 수 잇는 파일이면 참이다.
-nt if [[ 파일1 -nt 파일2 ]] 파일1이 파일2보다 최근 파일이면 참이다.
-ot if [[ 파일1 -ot 파일2 ]] 파일1이 파일2보다 오래된 파일이면 참이다.
-ef if [[ 파일1 -ef 파일2 ]] 파일1이 파일2보다 하드링크 파일이면 참이다.

 


Reference

반응형

'[OS]Operating System > [Linux]' 카테고리의 다른 글

[Linux] shell code - [], [[]], (), (()) 차이  (0) 2023.04.30
[Linux] shell script - python exit code  (0) 2023.04.30
[Linux] $?의 의미  (0) 2023.04.30
[Linux] tmux 사용하기  (0) 2023.04.16
[Linux] 파일 권한 의미  (0) 2023.04.15