-
[리눅스] 쉘 스크립트서버/리눅스 2017. 4. 3. 21:46
#쉘 스크립트
명령어의 자동화 작업을 실행한다.
#1 작성방법
#>vi <script_name>.sh : 리눅스 파일뒤에 붙여주는것은 확장자가 아니라 사용하기 편함이다.
#2 실행
#>sh <path>
실습)
#>touch script1.sh
#>vi script1.sh
echo "hello"
#>sh script1.sh
쉘스크립트안에는 해석하는 파일의 경로를 넣어놓습니다.
#! /bin/bash
하지만 기본값이 #! /bin/bash이므로 안써줘도 상관없습니다.
#3 변수
쉘스크립트 안에 변수도 작성할 수 있다.
변수 작성도 하나의 커멘드라고 생각하면된다.
@선언된 변수는 $(메타문자)를 앞에 붙여서 사용한다.
#4 자료계산
결과값의 명령어 expr을 사용해서 변수에 지정한다
ex) num1=10;
num2=20;
result=`expr $num1 + $num2`
echo $result
간단한 사칙연산하는 스크립트도 이렇게 만들수 있겠네요.
#5 아규먼트(파라매터, 인수인자, ...)
변수이름을 숫자로 하면 안되는 이유
숫자변수에는 각각의 의미가 있다.
$0 : 쉘 스크립트 이름
$1~ : 스크립트에 주어진 아규먼트들
더쉽게 사칙연산을 만들 수 있겠네요.
$# : 주어진 아규먼트의 갯수
$* : 입력한 아규먼트 전부 출력
$$ : 쉘에서 실행시 사용된 프로세스ID 출력
$! : 쉘에서 실행시 사용된 백그라운드 프로세스ID 출력
$? : 함수의 반환값
#6 조건문
아규먼트에 숫자가 안들어오면 에러
op변수에 *가 그대로 들어가면 에러(*같은 경우 와일드카드로 동작할 수 있기에 \*로 사용해야 사칙연산이 가능하다)
.... 많은 에러들이 발생할때 에러처리를 방지하거나 특정한 조건에 다른동작을 하게 해줍니다.
#>cat /etc/profile : /etc/profile에 조건문에 대한 정보가 들어있다
if [ 조건 ] then
command
exit
elif [ 조건 ] then
command
exit
else
command
fi
>> elif같은경우 몇개를 작성해도 상관없으며 elif와 else는 생략이 가능하다.
#숫자 크기 비교
[ $A -gt $B ] : A값이 B값보다 크다
[ $A -lt $B ] : A값이 B값보다 작다
[ $A -ge $B ] : A값이 B값보다 크거나 같다
[ $A -le $B ] : A값이 B값보다 작거나 같다
[ $A -eq $B ] : A값과 B값이 같다
[ $A -ne $B ] : A값과 B값이 다르다
#문자열 비교하기
[ "string" = "string" ] : 두 문자열이 같은 경우
[ "string" != "string" ] : 두 문자열이 다른 경우
[ -z "string" ] : 문자열의 길이가 0인 경우
[ -n "string" ] : 문자열의 길이가 0이 아닌 경우
#파일 비교하기
[ -d path ] 파일이 존재하고, 디렉터리
[ -f path ] 파일이 존재하고, 일반파일
#7 반복문
for 변수 in list
command....
done
list들에는 몇개든 상관없는 데이터가 들어갈 수 있다.
변수의 값을 이용해서 출력, 계산을 할 수있다.
while [ 조건 ]
do
command
done
조건이 참인경우 실행되는 반복문
3) while
while [ 조건문 ]
do
command
done
i=1
while [ $i -le 10 ]
do
echo "$i"
i=`expr $i + 1`
done
ex) guest1 ~ guest30 사용자를 생성
ex) 쉘스크립트
1. 그룹 team1, team2 생성
2. useradd.sh 스크립트 생성
스크립트가 실행되면
team1 - it1 ~ it20
team2 - it21 ~ it40
(기본그룹X, 그룹추가!!)
구성원이 되도록 사용자를 생성
'서버 > 리눅스' 카테고리의 다른 글
[리눅스] 디스크 관리 (0) 2017.04.06 [리눅스] 종료 명령어, 예약 (0) 2017.04.05 [리눅스] 환경변수 (0) 2017.04.03 [리눅스] 프로세스 (0) 2017.03.31 [리눅스] 파일시스템, 링크파일 (0) 2017.03.30