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
TAGS.

Comments