본문 바로가기

시스템/Linux

쉘 스크립트

시작

#!/bin/bash

종료

exit 리턴값

변수

내부변수

$PWS : 작업 디렉토리
$# : 인자갯수
$1 : 1번째 인자
$n : n번째 인자
$? : 이전 실행 명령의 상태

 

변수
변수명=값 으로 정의되며, '=' 사이에 공백이 없어야한다. 변수의 값을 사용하는 경우는 $변수명이다. 변수의 타입은 없다. 산술연산의 경우 자동으로 숫자로 계산되고, 그냥 붙여 쓰면 문자열처럼 합쳐진다. 따옴표("", ')로 변수를 정의하는경우 특수문자를 그래도 인식하도록 한다.

sample=100
echo $sample
echo "value is $sample"

// 변수가 널일경우 기본값으로 설정

sample
echo ${sample=100}

 

조건

if [조건식]; then
else
fi

else if의 사용

if [조건식]; then
elif [조건식]; then
else
fi

 

파일테스트의 경우 아래 인자로 조건을 주어 검사한다.
-e 존재
-f 파일 여부
-s 파일크기 검사
-d 디렉토리 여부
-p 파이프 여부
-h 심볼릭 여부
-S 소켓 여부

 

case

sample=1
case $sample in
0) echo "0";;
1) echo "1";;
esac

 

루프

for i in 목록
do
    명령
done

for i in [목록]; do
done


//목록 출력 예.
LISTS = "ITEM1 ITEM2 ITEM3"

for l in $LISTS
do
echo $l
done

//파일 리스트 출력 예.
for file in *; do
echo $file
done

 

c형태의 for루프. 이중 소괄호(( )) 는 산술 확장에 사용되는데, 해당 내부의 식을 계산해서 결과를 돌려주게 된다. 이중 소괄호를 사용해 (( a++ )) 과 같은 c형태의 산술연산이 가능하다. for문에서도 이를 사용하면 c와 같은 형태의 for 조건을 설정할 수 있다.

TOTAL=10
for ((i=0; a<TOTAL;i++))
do
done

while
while [조건]; do
done

 

 

인수참조

usage() {
    echo "-arg1:"
    echo "-arg2:"
}

// 루프를 돌며 첫번째 인자에 따라 변수에 저장한다.
// shift는 인자를 하나씩 줄임.
while [ "$1" != "" ]
do
    case "$1" in
    --arg1)			value=1;;
    --arg2)			value=2;;
    *) usage
    esac
    shift
done

 

 

입력

// 단순입력 
read value
echo $value

// -r 의 경우 \ 문자도 포함
read -r value

// 배열 -a
read -a values
echo ${values[0]}

// 키입력
read -n 1 -p "input"
echo $REPLY

read -n 1 -p "input": value
echo $value

'시스템 > Linux' 카테고리의 다른 글

[VM] VirtualBox에 Ubuntu 18.04 server guest 설치  (0) 2020.02.07
특정일 이전 백업 파일 삭제하기  (0) 2017.07.20
curl 간단 명령  (0) 2017.04.03
EPEL/XRDP  (0) 2017.03.09
bonding 설정  (0) 2017.02.19
SSH, 방화벽 관련 설정  (0) 2017.01.20
[CentOS7] systemd 기본사항  (0) 2017.01.20
[centos7] 방화벽 설정하기  (0) 2017.01.20
패키징 관련  (0) 2014.07.27