[쉘 스크립트] 쉘 스크립트 기초 문법에 대해 알아보자

728x90

쉘 스크립트 기초 문법

shell

⸰ 사용자와 커널 사이에서 사용자로부터 명령을 받아 해석하고 프로그램 실행

 

파일 생성

$ vi 스크립트명.sh

 

실행권한을 부여, 실행

$ chmod 755 example.sh
$ ./example.sh

 

Shebang

#!/usr/bin/bash

 

⸰ 스크립트 첫 째 줄에 쉘 스크립트가 실행될 때, 어떤 쉘로 실행할 지 정의하는 곳

 

  -sh: 초기의 유닉스 쉘

  -ksh: 콘 쉘, sh 확장

  -csh: c언어 기반

  -bash: 리눅스 표준 쉘, sh와 대부분 호환

 

변수 선언

⸰ 대/소문자 구별함

⸰ 숫자로 시작 X (포함 가능)

⸰ 모든 값 문자열로 저장

⸰ 변수 사용 시 $ 사용

⸰ 변수 초기화 시 $ 사용 X

⸰ = 문자 앞뒤로 공백 없어야 함

 

√. 문자열을 붙여서 사용하려면, ${ } 사용

#!/usr/bin/bash

name="Ye"
pass=123123 # 문자열로 저장

echo $name 
echo "my name is ms.${name}"
printf "%s" $pass

 

전역 변수, 지역 변수

⸰ 기본적으로 전역 변수

⸰ 함수 안에서 지역 변수 사용 가능 > local 사용

 

√. local을 빼면 전역 변수로 덮어 씌워짐

string="hello world"

function string_test() {
    local string="hello local @@"
    echo ${string}
}

string_test      # > hello local @@
echo ${string}   # > hello world

 

매개 변수

$0 실행된 쉘 스크립트명
$1 첫 번째 인자
$2 두 번째 인자
... ...
$* 모든 인자 출력
$@ 인자의 개수 출력
$! 마지막으로 실행한 백그라운드 PID (프로세스 ID)
$$ 현재 쉘 스크립트의 PID
$? 바로 직전 실행한 명령어의 종료값 (0 or 1)
#!/bin/bash
echo "\$0 : $0"
echo "\$1 : $1"
echo "\$2 : $2"
echo "\$* : $*"
echo "\$# : $#"
echo "\$\$ : $$"
# 입력예제 : ./example.sh hello 1

$0 : example.sh
$1 : hello
$2 : 1
$* : hello 1
$# : 2
$$ : 731	#프로세스ID

 

비교 연산자

-eq equal (같다)
--ne not equal (같지 않다)
-lt less than (작다)
-le less or equal (작거나 같다)
-gt greater than (크다)
-ge greater or equal (크거나 같다)
-n null 이 아니면 true
-z null 이면 true

√.이중 소괄호 (( )) 를 사용하면, 문자 대신 기호로 표현 가능 (소괄호 안 따옴표('') 불가능)

if [ ${a} -eq ${b} ]; then
    echo "a와 b는 같다."
fi

if (( ${a} <= ${b} )); then
    echo "a는 b보다 작거나 같다."
fi

 

 

 

728x90