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 |