+ 한국항공대학교 최차봉 교수님의 임베디드 SW 과목 내용을 정리한 글입니다.
Shell Script 사용법
1. vi [Shell Script]
: Shell Script 생성
2. vi로 Shell Script 작성- 상단에 #!을 작성하여 실행할 Interpreter 지정
#!/bin/bash
3. chmod u(a)+x [Shell Script]
: 실행 파일로 변경
4. [Shell Script] : Shell Script 실행
echo $PATH : PATH 변수 확인
PATH 변수를 변경하여 PATH 수정
ex) PATH="$PATH:."
터미널 시작 시 자동 실행
~/.bashrc : bash가 수행될 때 함수를 제어하는 지역 환경설정
=> .bashrc 파일의 하단에 echo $LOGNAME 추가
+ !!는 "!!"으로 감쌀 수 없다. '!!'으로 사용해야한다. (!!는 반복을 나타내는 명령어)
+ 파일을 수정 후 source 명령어를 통해 저장해야한다. (중복 저장 주의)
=> source .bashrc
문자열을 그대로 출력
#!/bin/bash
echo "Hello, World!!"
대소문자 변환
문자열을 대문자로 변환
str="abc"
echo ${str^^} # 대문자로 변환
문자열을 소문자로 변환
str="ABC"
echo ${str,,} # 소문자로 변환
문자열 내 문자 변경
가장 먼저 나오는 문자 하나를 변경
str="abc-1-5"
echo ${str/-/:} # str 내 처음 등장하는 '-'를 ':'로 변경
등장하는 모든 문자를 변경
str="abc-1-5"
echo ${str//-/:} # str 내 모든 '-'를 ':'로 변경
명령 실행 결과를 변수에 저장하는 방법
1. $([명령어]) - 주로 사용
a=$(pwd) # 현재 경로를 변수에 저장
echo $a
2. $`[명령어]`
a=$`pwd` # 현재 경로를 변수에 저장
echo $a
Shell Script Parameter
$0 : Shell File Name
$1 : 1st Parameter ($2 : 2nd, $3 : 3rd ...)
$* : All Parameters
$# : Number of Parameters (인자 개수)
expr 명령어
- Shell Script에서 다양한 계산을 가능하게 한다.
입력 받은 두 수를 더해서 출력
echo $(expr $1 + $2)
if 문
if [ condition ]
then
[ command ]
elif [ condition ]
then
[ command ]
else
[ command ]
fi
또는
if [ condition ]; then command; elif [ condition ]; then command; else [ command ]; fi
+ [ condition ] 공백 넣는 것을 유의해야한다.
Condition Options
점수가 90점 이상이면 'Grade: A+' 표시
a=96
if [ $a -ge 95 ]; then echo "Grade: A+"; fi
첫 번째 인자가 짝수인지 홀수인지 표시
#!/bin/bash
if [ $(expr $1 % 2) -eq 0 ]
then
echo "$1 is even"
else
echo "$1 is odd"
fi
[ condition ] && command1 || command2
=> [condition]이 true면 command1, false면 command2를 실행한다.
[ $(expr $1 % 2) -eq 0 ] && echo "$1 is even" || echo "$1 is odd"
두 수 계산기 (단, 곱하기는 x로)
if [ "$2" == "x" ]
then
res=$(expr $1 \* $3)
else
res=$(expr $1 $2 $3)
fi
echo "$1 $2 $3 = $res"
+ *는 Linux에서 따로 해석되는 명령어이기 때문에 \를 따로 취해야 한다.
while 문
while [ condition ]
do
command1
command2
done
또는
while [ condition ]; do command1; command2; done
+ break : loop 종료
0부터 10까지 출력
nu=0
while [ $nu -le 10 ]
do
echo "Number: $nu"
((nu++))
done
++, -- 연산을 사용할 때는 ((++)), ((--)) 괄호 2개를 사용해주어야한다.
배열 (Array)
arr=(item1 item2 ...) : 배열의 지정
$arr : 첫번째 요소
${arr[index]} : 배열의 index번째 요소 (index는 0부터)
${arr[@]} : 배열의 모든 요소
+ Shell Script의 배열은 숫자와 문자는 따옴표 없이 사용해도 자동으로 구분
for 문
for [ variable ] in [ array ]
do
command1
command2
done
또는
for [ condition ]; do command1; command2; done
1월 ~ 12월 영문 이름 출력
arr=(jan feb mar apr may jun jul aug sep oct nov dec)
# ""을 사용하지 않으면 자동으로 문자열로 저장 ("" 사용 가능)
i=1
for mon in ${arr[@]}
do
echo "Month $i: $mon"
((i++))
done
텍스트 데이터 분리
cut [옵션] [파일명] : 텍스트 파일이나 텍스트 데이터에서 특정 열(필드) 또는 문자열을 추출한다.
-f : 열을 선택 (기본값: 공백)
ex) cut -f2,4 myfile.txt : 2번째, 4번째 필드추출
-d : 열 구분자를 지정 (기본값: 공백)
ex) cut -d ',' -f2 myfile.txt : ','로 구분된 2번째 필드 추출
-c : 특정 위치의 문자 추출
ex) cut -c1-5 myfile.txt : 첫 번째 문자부터 다섯 번째 문자까지 추출
+ 문자열 변수에서 추출할 때, $(echo [문자열] | cut ~) 이용
+ 열 구분자를 지정하여 문자열을 자를 때, 처음 나오는 구분자 앞에 있는 문자열이 첫번째 필드이다. 만약 처음 나오는 구분자 앞에 있는 문자열이 없다면 null을 반환하게 된다.
'Computer Science > Embedded Software' 카테고리의 다른 글
[Embedded Software] Embedded System 개발 (example) (1) | 2023.09.19 |
---|---|
[Embedded Software] Shell Script 실습 (0) | 2023.09.15 |
[Embedded Software] Linux Commands 실습 (3) | 2023.09.08 |
[Embedded Software] Linux Basic Commands (0) | 2023.09.06 |
[Embedded Software] Linux Basic (0) | 2023.09.06 |