[리눅스] 쉘 프로그래밍

2020. 6. 18. 16:13
쉘프로그래밍
shell : 시스템 과 사용자 간의 인터페이스
shell script : 쉘에서 실행하도록 작성된 프로그램( 확장자 sh)
*컴파일 없이 바로 터미널에서 실행
- 속도 빠름
- 컴파일이 없다 => 오타/실수 잡지 못함

 

맨 위에 #!/bin/sh는 주석이 아님

echo는 출력 $USER, $HOSTNAME 는 시스템변수

끝 나타내기
sh 로 실행

sh로 실행은 가능

바로 실행하려니 허가 거부 => 실행권한이 없음

권한 수정

정상적으로 실행됨

sh파일 만들기

  [실행방식] 

      - sh파일명

      - ./파일명 (execute 권한이 있어야한다) 기본적으로 만들 땐 실행권한이 없음

 

   - 선언 앞 뒤로 공백있으면 안됨!

결과

   - ' ' 와 " " 다름

   - ' ' 는 단순 문자로 취급

   - " " 에는 변수 사용가능

 

입력 받기 

 

숫자계산

   - 쉘 스크립트에서 변수값은 모두 문자열

   - 문자열을 숫자로 변환 : `expr 변수`   ( `는 탭 위에 바 표시)

주의 ! 연산자 양 옆은 공백!

   - 특수기호 앞엔 \표시

   - 특수기호 양 옆은 공백

   - *는 특수기호 /는 특수기호 아님

 

두 수를 입력받고 두 수의 곱과 두수의 평균을 출력

결과

3. 매개변수

   - 자바의 main()  함수의 arg같은 느낌

   - 첫번째 값은 파일의 이름

var.sh 생성 후 작성

결과

4. 조건문 

   - if [ 조건 ]          #대괄호, if, 조건 사이에 공백 필수

   - then 

            참인경우

   - elif [ 조건 ]

   - then

            다른 경우

   - else

            거짓인 경우

   - fi #if문 종료

결과

매개변수 두개가 같으면 동일

다르면 다름

결과

이런식으로 ; then을 써 한 줄에 쓸 수 있음

5. case 문

   - case 변수 in

       - 경우1) 명령문;;

       - 경우2) 명령문;;

       - *) 그외 명령문;;

   - esac

결과 

조건 연산자
 -eq (equal) / - neq (not equal) / -gt(greater than) / -ge(greater equal) / -lt(letter than) / -le(letter equal) / ! (not)

점수를 입력받아 A~F학점 출력 (case문 이용)

결과

파일 관련 옵션

 -f : 파일이면 true

 -d : 디렉토리이면 true

 -e : 존재하면 true

 -r : 읽기 가능하면 true

 -w : 쓰기 가능하면 true

 -x : 실행 가능하면 true

 -s : 파일의 크기가 0이 아니면 true

결과

논리 연산자

   - if [A] && [B]         if [A -a B]  AND연산자

   - if [A] || [B]            if [A -o B]  OR연산자

   ex) if [A && B] => 에러

결과

for

      - for 변수 in 값1 값2 값3 ...

      - do

                반복할 문장

      - done

     결과

      - for 변수 in `seq 초기값 마지막값`  #python의 range와 비슷

      - do

                반복할 문장

      - done

 

      - for ((초기값 ; 조건문 ; 증가치))   # 괄호 두개 java와 비슷

      - do

                반복할 문장

      - done

결과

 

while

  - while [ 조건 ]

     - do 

           반복할 문장들

     - done

break / continue / return

 

날짜

$(date)

결과 

따로 자르고 싶을 때

set $(date)

$숫자 로 사용

결과

 

BELATED ARTICLES

more