linux ShellScript
CentOS 7의 기본 shell은 bashshell 입니다.
Script : 프로그램 언어 외의 간단한 언어로 작성한 명령어 등을 일컫는 말
ShellScript
- 하나의 파일
- 쉘스크립트 파일을 실행하면 파일에 저장된 명령어들이 실행 됨
- 이름을 .sh 로 생성 (없어도 실행은 되지만 구분을 위한 일종의 약속)
- 파일 내용 제일 상단에 #!(사용할 쉘 스크립트) 입력
ex) #!/bin/bash
- 내용 위에서부터 순차적으로 명령 실행
- 공백은 무시해 줌
- 자주 사용하는 명령어들을 조합하여 사용할 때 유용함
- 사용방법 : sh <file_name>
쉘스크립트 파일을 만들 때 변수를 많이 사용하는데, 이 때 만든 변수는 운영체제가 종료될 때 자동으로 없어집니다. 어떤 shell에서 변수를 만들면 그 shell에서만 사용 가능합니다. shell이 종료되면 자동으로 사라지겠죠..
/etc/profile 파일은 shell이 시작될 때 가동되는 파일인데 이 파일에 변수를 만드는 명령어를 넣어두면 로그인할 때마다 변수가 생성됩니다.
예를들어 touch_file.sh 란 파일을 생성후 안에 touch A 라는 명령어를 넣고 실행하면 자동으로 A라는 파일이 생성됩니다.
조금더 심화로 들어가면 쉘스크립트에서 많이 사용하는 for/if 명령어가 있는데
for 의 특징은 다음과 같습니다.
for
- 특정 명령어들을 반복적으로 실행시킬 때 사용하는 명령어
- do 와 done 사이에 작성한 명령어를 반복적으로 실행
- 리눅스 내 어떠한 명령이든지 사용할 수 있음
- for 명령어는 변수를 반드시 하나 지정
- 변수를 지정할 때는 변수에 이름 앞에 $없이 지정
- 변수가 미리 만들어져 있거나 없어도 상관 없음
- for명령이 종료되어도 만들어진 변수는 저장되어 그대로 남아있음
for를 쓰는 방식은 2가지가 있습니다.
①
for i in {}
do
<명령어>
done
②
for((i=1;i<10;i++))
do
<명령어>
done
ex) ①
#!/bin/bash
for i in {1..5}
do
echo $i //명령어
done
* 1...5=1,2,3,4,5
* 1부터 5까지를 변수 i에 넣고 명령어를 실행하라
ex) ②
#!/bin/bash
for((i=1;i<10;i++)) //증감
do
echo $i //명령어
done
* ((i=1;i<10;i++)) : i는 1부터 시작 i++ 로 i값이 1씩 증가, i는 10보다 작다. 즉 i<10 값이 성립될때까지 i값이 증감되면서 명령어 계속 실행
if
- if 명령어는 조건식이 만족됐을 때 특정 명령어를 수행시킴
- if 명령어에서는 [] 대괄호 사이에 조건식이라는 것을 사용할 수 있음
- 조건식은 참 또는 거짓 중 하나를 결과로 낳는다.
- if는 조건식이 참일 때 특정 명령어 가동
- 조건식은 [ ]사이에 띄어쓰기 후 사용
if [ 조건식 ]
then
<명령어>
elif [ 조건식2 ]
then
<명령어>
else
명령어
fi
* if 조건식이 참이면 then 명령어 실행, 거짓이면 elif로 내려간 후 판별, 참이면 then 실행 거짓이면 else 명령어 실행 fi 명령 끝
① 조건식 1.(숫자 비교)
[변수] -eq 5 : 변수가 5랑 같다
[변수] -ne 5 : 변수가 5랑 같지 않다
[변수] -gt 5 : 변수가 5를 초과한다
[변수] -ge 5 : 변수가 5 이상이다
[변수] -lt 5 : 변수가 5 미만이다
[변수] -le 5 : 변수가 5 이하이다
① 조건식 2.(문자 비교.. 숫자도 사용 가능)
== : 같다
!= : 같지 않다
④ 조건식 3.
[ -a test ] : test란 파일이 있으면 참
[ -d test ] : test란 디렉터리 파일이 있으면 참
[ -f /root/test ] : /root 디렉터리에 test란 파일이 있으면 참
[ $a -eq 10 -a $b -eq 20 ] : -a 옵션 기준, 왼쪽 오른쪽 식이 모두 참이면 참
[ $a -eq 10 -o $b -eq 20 ] : 두개 중에 하나라도 참이면 참
[ -z $a ] : 지정한 변수가 값이 없으면 참, 값이 있으면 거짓
[ $a ] : 지정한 변수 값이 있으면 참, 없으면 거짓
$1 : 전달 받은 첫번째 매개변수
ex)
#!/bin/bash
read -p "값을 입력하세요 : " a
if [ $a -eq 5 ]
then
echo 참입니다.
else
echo 거짓입니다.
if
* read 명령어는 지정한 변수를 만드는데 변수의 값을 사용자한테 입력받음
* read -p : 문자열 출력 후 값을 입력받음
* 사용자가 입력한 a 값이 5와 같으면 참을 출력, 5와 같지 않으면 거짓입니다.를 출력
'OS > linux' 카테고리의 다른 글
linux crontab (0) | 2016.12.10 |
---|---|
linux SSH/SCP (0) | 2016.12.10 |
linux IP 수동 설정하는 방법 (0) | 2016.11.08 |
linux Firewall (0) | 2016.10.20 |
linux Quota (0) | 2016.10.19 |