쉘 스크립트의 간단한 사용법 for 라즈베리파이

2022. 8. 11. 17:12라즈베리파이

유튜브에 보면 라즈베리파이를 진짜 가지고 노는 특이하신 분들이 많네요

그렇게 까지 하고 싶진 않고 그냥 내 작품만 잘 돌아갔으면 좋겠습니다ㅠㅠ

 

예전에 졸업 전시에 가면 라즈베리파이로 만들었다는 제품을 보면 이게 컴퓨터라는 생각이 전혀 들지 않았습니다.

라즈베리파이가 터치스크린인가..? 하는 생각이 들곤 했는데

아마 그런 것들은 쉘 스크립트(shell script)로 흐름을 잘 짜놓았을 겁니다.

 

먼저 쉘 스크립트가 뭔지 설명을 드리겠습니다.

쉘 스크립트.. 어렵지 않아요!

 

Shell script for LINUX

cd /home/pi/Desktop/YOURPROJECT
pwd = $(PWD);
source "$pwd" + /env/bin/activate
echo "venv is activated"

마치 윈도우의 배치파일처럼 여러 명령어를 쭉 기입해놓은 파일을 리눅스에선 쉘 스크립트라고 합니다.

확장자는 sh에요.

 

여타 파일과 같이 라즈베리파이 환경에선

sudo vim script.sh

 

이렇게 연 다음 실행하고 싶은 명령어를 기입해주세요.

스크립트 언어이기 때문에 당연히 한 줄 씩 실행됩니다. 모든 작업은 동기 프로그램으로 실행되기 때문에 만약에 어떤 파일 실행에 오래걸린다해도 그냥 그대로 기다립니다. 이런 식의 활용도 가능합니다.

 

echo "실행할 모드를 골라주세요."
echo "(1) 모드 1 , (2) 모드 2"

// 패키지 설치할 때처럼 1,2 혹은 y,n 등 사용자가 직접 입력하게 하고 싶은 경우
while true; do
	read -p "숫자로만 입력해주세요" answer
    case $answer in
    	[1]* ) NEXT_JOB1; break;;
        [2]* ) NEXT_JOB2; break;;
        * ) echo "숫자로만 입력해주세요";;
    esac
done

// 사용자가 객관식 명령 중 선택하고 싶게 하는 경우
echo "어떤 모드를 실행할까요?"
select mode in "모드1" "취소"; do
	case $mode in
    	모드1 ) NEXT_JOB; break;;
        모드2 ) exit;;
    esac
done

 

이런 식으로 while 문이나 select라는 구문을 통해 사용자의 입력을 받아서 분기를 분리하는 것도 가능합니다.

당연히 if 문도 있어요. while 문 안에서 모든 걸 처리하지 말고 바깥의 변수를 변환시켜줘봅시다.

변수의 선언과 if 문은 이렇게 사용할 수 있습니다.

 

var=false

if [[ "$var" = "false" ]];
	then NEXT_JOB; exit;
fi

 

if 구문 안에서 실행한 다음엔 fi로 꼭 닫아줍시다.

생각하고 있는 대로 구문을 짜보셨나요?

짠 다음에 같이 실행을 해볼까요?

 

sh script.sh

 

가볍게 실습을 한 번 해봤습니다.

다음엔 제가 설계한 순서의 스크립트를 한번 보여드리겠습니다!

 

그럼 이만!