티스토리 뷰
1) Bash 쉘스크립트 문법
- 쉘 스크립트는 다른 개발 언어와 유사한 언어 문법을 갖는다.
1. 변수
2. 함수
3. 조건문
4. 반복문
5. 주석
6. 디버깅
2) Basic Syntax and Special Characters
- # : 주석처리를 할때 사용한다. (#!는 bash에 의해서 해석되는 스크립트를 알리는 문구)
- \ : 명령어가 길때 다음 라인으로 넘길때 사용
- ; : 여러개의 명령어를 순차적으로 수행할때 사용
- $ : $ 뒤에 보통 변수라는것을 나타낸다.
- && : 앞에 명령어가 정상적으로 수행한 경우에만 다음 명령어 수행이 가능하다.
ex) $make && make install && make clean
- || : 하나를 수행해서 정상적으로 종료되면 종료한다. 정상적인 종료가 되지 않으면 정상적인 종료가 될때까지 || 로 이루어진 명령어를 수행한다. ex) $cat file1 || cat file2 || cat file3
3) Functions
- Declarations (선언)
function_name () {
command....
}
예시)
display(){
echo "This is the message from the function"
echo "the parameter passed from calling process is" $1
}
display "Bob"
display "stuart"
display "James"
출력 : This is the message from the function
the parameter passed from calling process is Bob
This is the message from the function
the parameter passed from calling process is stuart
This is the message from the function
the parameter passed from calling process is James
$1 -> 첫번째 함수 argument를 나타낸다.
4)Built-in Shell Commands
5) Command Substitution
- 명령어의 결과를 다른 명령의 일부로 사용 가능한것
- 명령어를 backtick 마크사이에 위치 `....`
- 명령어를 $() 사이에 위치 (명령어의 결과로 대치가 가능하다)
ex) pushd /lib/modules/`uname -r`
버전의 이름이 대치되어 명령어 자리에 들어가게 된다.
- uname -r (커널 버젼을 찍어주는 명령어)
6) Variables
- 변수이름을 참조 할때는 $ 기호를 변수앞에 붙임
- 변수 값을 대입하거나 수정시에는 $기호를 사용하지 않는다.
- HOME, PATH, HOST와 같은 표준 환경변수(enviroment variable)도 일반 변수와 동일하게 사용된다.
- 환경변수는 env, set, printenv 명령으로 얻을 수가 있다.
ex) echo $MYCOLOR를 바로하면 출력이 없게된다
만일 , MYCOLOR = black 을 넣고 echo $MYCOLOR 를 하면 black이 출력된다
7) Exporting Variables
- 스크립트 내에서 선언된 변수는 스크립트 안에서만 유효하다.
- 자식 프로세스 (Child process)가 변수를 접근하도록 하기 위해서는 export를 명시적으로 해야할 필요가 있다.
ex) export VAR = value 또는 VAR = value; export VAR
8) Script parameters
-스크립트에 파라미터를 전달할 수 있다.
ex) $./script.sh/tmp
$./script.sh 100 2000
=> script.sh는 $0 , 100은 첫번째 파라미터이니까 $1이 된다.
'IT > Embedded Software' 카테고리의 다른 글
[임베디드 SW 공학] 쉘(Shell) 반복문 (0) | 2017.09.09 |
---|---|
[임베디드 SW 공학] 쉘(Shell) 조건문 (1) | 2017.09.09 |
[임베디드 SW 공학] Bash 소개 (2) | 2017.09.08 |
[임베디드 SW 공학] 리눅스 부트과정 (0) | 2017.09.04 |
[임베디드 SW 공학] 리눅스 관련 용어 (0) | 2017.09.04 |