Bash - shell script
쉘 스크립트를 쓰는 이유
1. 자동화 2. 심플하다 3. 공유가 가능 4. 간단한 인터페이스를 만들 수 있음 5. 새로운 명령어 만들 수 있음 6. compile없이 빠르게 처리 가능
shell script interpreter(쉘 스크립트 해석기) : 여러가지 종류가 있다 -> Linux에서는 Bash를 사용
쉘 스크립트 문법, 함수
# - 주석처리 -> bash스크립트 만들 시 첫 줄에 #! /bin/bash 라고 써주는데 이것은 주석이 아님(배쉬에의해 실행되는 스크립트라는 표시)
\ - 다음 라인으로 넘김, 전 줄과 다음줄을 연결
; - 여러개의 명령어를 순차적으로 표현
$ - 변수임을 나타냄
&& - 하나의 명령이 실행되면 다음 명령어를 실행
|| - 하나라도 실행 되면 바로 끝냄
! - NOT
1. 순차적 실행
2. 정상적으로 동작을 해야 다음단계로 넘어갈 수 있음
3. 정상적으로 동작이 안되면 계속 실행
echo 'hello' - hello를 print
chmod + x - 실행가능한 속성으로 바꿔줌 - 명령어처럼 사용가능
함수 예제
Command
rm,ls,df,vi,gzip -> /usr/bin
cd,pwd,echo -> bash 스크립트
Command Substitution : 명령어의 결과를 다른 명령의 일부로 사용가능
명령어를 backtick 마크사이에 위치 : `...`
명령어를 $() 사이에 위치
Variables
변수 이름을 참조할때는 $기호를 변수앞에 붙임
변수 값을 대입하거나 수정시에는 $기호를 사용하지 않음
HOME,PATH,HOST와 같은 표준 환경변수도 일반 변수와 동일하게 사용됨
환경변수는 env.set.printenv 명령으로 얻을 수 있음
exporting Variables : 스크립트 내에서 선언된 변수는 스크립트 안에서만 유효함
자식 프로세스가 변수를 접근하도록 하기 위해서는 export를 명시적으로 해야 함
ex) export VAR=value
script parameters : 스크립트에 파라미터를 전달할 수 있음
ex) $ ./script.sh /tmp <- tmp라는 값을 전달
$ ./script.sh 100 2000 <- 100, 2000 두 파라미터를 전달
$0 : 스크립트 이름
$1 : 첫번째 파라미터 그 후는 $2, $3 ...
$* : 모든 파라미터
$# : 파라미터의 개수
$? : 값 리턴
예제
#! /bin/bash
echo -n "Enter your name"
read sname
echo "hello $sname. You are wonderful!"
조건문 - if statement
if 조건 -> [ 조건 ] 대괄호 안에 조건을 넣는다 공백에 주의
then
할것
elif 조건
then
할것
else
할것
fi
Numerical tests
-eq : 같은지
-ne : 다른지
-gt : 왼쪽이 오른쪽보다 큰지
-lt : 왼쪽이 오른쪽보다 작은지
-ge : 같거나 큰지
-le : 같거나 작은지
Arithmetic expression : 산술 연산을 하기 위해 사용하는 것
ecpr 유틸리티 사용 : echo $(ecpr 8 + 8)
$((...))를 사용 (가장 자주 사용됨) : echo $((x+1))
let을 사용 : let x=(1 + 2) ; echo $x
반복문 : for, while, untile
for loop : for 변수이름 in list \ do... ... \ done
while loop : while 조건(참인동안 반복, 거짓이면 중단) \ do... ... \ done
until loop : until 조건(거짓인동안 반복, 참이면 중단) \ do... ... \ done
'임베디드SW공학' 카테고리의 다른 글
[6주차]Linux/Unix System Programming (0) | 2018.11.01 |
---|---|
[5주차]git (0) | 2018.10.16 |
[4주차]make (0) | 2018.10.07 |
[3주차]GCC&library (0) | 2018.10.07 |
[1주차]Linux Terminology (0) | 2018.09.26 |