코딩/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

 

복합 조건

  • [ ... ] 내부에서 조건 결합
    1. !expr : 부정
    2. -a : AND
    3. -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