쉘 스크립트
쉘로 시작하는 시스템 프로그래밍 기본
쉘 스크립트
쉘을 사용한 프로그래밍 작업으로서 서버 작업 자동화 및 운영(DevOps)를 위해서 기본적으로 익혀둘 필요가 있다.
로그가 많이 쌓여서 서버가 죽을 경우 스크립트를 생성해서 로그를 주기적으로 삭제 하도록 하는 등의 작업을 들 수 있다.
기본 문법
#!/bin/bash
로 시작해야 하고 실행 권한을 가지고 있어야 한다. 파일 이름은 일반적으로 파일이름.sh
와 같은 형태로작성한다.
실습
echo 함수를 이용하여 화면에 Hello bash!"
를 출력 할 수 있도록 스크립트 작성
1 | !/bin/bash |
실행 권한이 있어야 한다. chmod +x test.sh
실행은 test.sh
가 있는 폴더로 들어간 후 ./test.sh
입력.
주석
#
으로 시작하면 주석이다.
변수
선언
변수명=데이터
로 사용한다. 띄어씌기는 허용되지 않는다.
사용
$변수명
으로 사용된다.
1 | !/bin/bash |
실습
아이디 관련 정보 변수만들기 (실제 이름, 나이, 직업)
1 | !/bin/bash |
리스트
선언
- 변수명=(데이터1 데이터2 데이터3 …)
사용
${변수명[인덱스번호]}
로 사용한다.
1 | !/bin/bash |
실습
아이디 관련 정보 리스트 변수로 만들고, 각 정보 출력하기
사전에 정의된 지역 변수
1 | $$ : 쉘의 프로세스 번호 |
실습
쉘 프로세스 번호, 쉘 스크립트 이름, 명령줄 인수, 모든 명령줄 인수리스트, 인수 개수 출력해보기
1 | !/bin/bash |
연산자
expr
: 숫자 계산
expr
를 사용하는 경우 백틱을 사용해야 함. 연산자 *와 괄호 앞에는 역슬래시를 넣어야 한. 연산자와 숫자, 변수 사이에는 space를 넣어야 함.
1 | !/bin/bash |
조건문 문법
기본 if 구문
- 명령문을 꼭 탭으로 띄워야 하는 것은 아님(then과 if 안에만 들어가 있으면 됨.)
두 인자값을 받아서 두 인자값이 다르면 differnt values
출력
1 | !/bin/bash |
조건 문에 띄어쓰기를 주의한다.
조건 작성이 다른 프로그래밍 언어와 달리 가동성이 현저히 떨어짐, 필요할때마다 찾아보길..
파일 검사
1 | -e 파일명 # 파일이 존재하면 참 |
해당 파일이 있는지 없는지 출력하는 쉘 스크립트 작성해 보기
1 | if [ -e $1 ] |
if else
1 | !/bin/bash |
쉘 크립트 해석하기
1 | !/bin/bash |
ping -c 1 192.168.0.1 1> /dev/null
응답 확인 요청 -c 1
를 통해 1번만 요청, 1> /dev/null
를 통해 응답 결과 표준 출력을 버림,
반복문
1 | !/bin/bash |
for 문을 while로 바꿔서 사용도 가능. (일반적인 프로그래밍 언어처럼 사용 가능.