dash(데쉬)
경량
이다, 임베디드 리눅스에 보통 사용됩니다.bash(배쉬)
중량
이다, 기능이 많다, PC 리눅스에 사용됩니다. 임베디드에 사용하기 위해서는 따로 설치해줘야한다.CLI Shell은 자동화 스크립트
를 만드는데 유용합니다.
파이썬 스크립트를 사용하여 할 수 있지만, python 실행기를 따로 설치해줘야하기 때문에 bash를 사용한다.
bash shell script의 확장자 .sh
이다. bash script를 dash shell에서 실행하지 못한다!
bash 쉘
: #!/bin/bash
dash 쉘
: #!/bin/sh
#!
을 쉬뱅
이라고 부른다.
쉘스크립트에서는 쉬뱅을 입력하고 명령어를 입력하면 바로 사용가능합니다.
.sh
스크립트를 생성하였다면 source [스크립트명].sh
를 통해 실행가능합니다.
read [변수명]
: 변수명에 입력받기
echo
: 출력하기
[변수명]=[값]
을 통해 변수 선언가능하다.
$[변수명]
을 이용해 재사용 가능합니다.
변수 선언할때에는
띄어쓰기
를 하면 오류가 납니다.
모든 값들은문자열
로 취급합니다.
bts1=100 과 bts1="100"은 동일한 선언문입니다.
go.sh
#!/bin/sh
echo $1
echo $2
source go.sh 123 abc
출력
123
abc
source 뒤에 넣어준 변수 2개가 Argument 변수
라 부릅니다.
$(( ))
를 통해 산술 연산 가능합니다.
#!/bin/bash
bts=123
abc=$(($bts+123))
echo $abc
결과
246
변수에 명령어 실행결과를 저장할 수 있습니다.
변수=$(쉘 명령어)
띄어쓰기
꼭 지켜줘야합니다
#!/bin/bash
a=BTS
if [ $a = "BTS" ] ;then
echo "BTS GOGO"
else
echo "NO!!"
fi
-lt
: less then으로 <
을 뜻함
-eq
: equal으로 =
을 뜻함
-gt
: greater then으로 >
을 뜻함
-ne
: not equal으로 !=
을 뜻함
-ge
: greater equal으로 <=
을 뜻함
-le
: less equal으로 >=
을 뜻함
||
: OR
&&
: And
명령어1 && 명령어2
: 명령어1을 실행하고 명령어2를 실행한다.
printf "출력문자열 \n"
or printf "출력문자열 %변수자료형 \n" 변수
echo와 달리 \n
이라는 개행문자를 넣어줘야합니다.
()
: 배열 만들 때 사용한다. , {}
: 배열값을 출력할 때 사용한다.
#!/bin/bash
// ,없이 구현한다.
arr=(1 2 3 4)
// arr[0]을 하나의 변수라 생각하면 편하다.
echo ${arr[0]}
echo ${arr[1]}
echo ${arr[2]}
echo ${arr[3]}
// dash에서만 사용 가능
#!/bin/bash
for((i=0; i<10; i++))
do
echo "HI"
done
--------------
// bash & dash 둘다 사용 가능
for((i=0; i<10; i++));do
echo "HI"
done
#!/bin/bash
abc()
{
printf "HIHI\n"
}
printf "START\n";
abc
abc
환경변수 : 어는 위치
에 있는지 상관없이 사용 가능한 변수
쉘에서의 환경변수 : 쉘에 저장되는 변수로 사용자, Process, 리눅스 자체 등 다 같이 사용가능한 변수이다.
printenv
: 환경변수 전체 읽기
echo $변수명
: 환경변수 특정 변수만 읽기
export[변수] = [값]
: 환경변수에 값 저장하기
but) 저장된 환경변수는 터미널 껐다 킬시 삭제
된다.
따라서) ~/.bashrc
의 맨 아랫줄에 export로 변수를 추가시키면 유지
된다.
~/.bashrc
란 처음 부팅할 때 초기 셋팅해주는 파일이기 때문에, export로 추가해주었다면 재부팅
해줘야 해당 변수를 인식할 수 있다.
재접속
: 로그인/로그아웃으로 계정에 다시 접근하는 것
재부팅
: 서버 자체를 껐다 켜는 것
crontab
: 원하는 시간 / 조건에 특정 명령어를 수행 시키기 위해 만들어야 하는 파일
.sh
를 가지는 스크립트 파일 생성 후 해당 파일의 실행 권한을 chmod +x ~/[스크립트명]
와 같이 부여해줍니다.
참고) date '+%H:%M:%S'
: 현재 시간 출력 명령어
sudo vi /etc/crontab
에서
에 맞게 작성해줍니다.
sudo service cron status
: 정상 동작 확인
sudo service cron restart
: 재시작 명령어