쉘 스크립트(.sh)란?
쉘은 리눅스에서 명령어를 한줄한줄 입력할 수 있도록 사용자에게 인터페이스를 제공하는 프로그램이구요
스크립트는 javascript, python과 같은 스크립트 언어라는 것을 뜻합니다
(간단하게 스크립트 언어란 한줄 한줄씩 실행되는 언어를 말합니다)
합쳐서 한마디로 쉘에서 사용되는 일련의 스크립트(각각의 커맨드라인)들을 파일 형태로 모아놓은 것이 되겠네요
자주 실행하는 일련의 명령어들이 있을 때, .sh 확장자 파일 안에 한 줄씩 저장해두면 나중에 sh파일만 실행시켜주면 되는 거죠
쉘 스크립트에서의 if, for, while
쉘 스크립트 안에서도 물론 조건과 반복을 넣어줄 수 있는데요, 그런데 생김새가 좀 낯설어요
if 문 문법
if [ 조건 ]
then
실행 명령어
elif [ 조건 ]
then
실행 명령어
fi
조건이 대괄호 안에 들어있고, else if는 elif로, 중괄호 없이 if문의 끝을 fi로 마무리 짓습니다
여기서 한가지 더 주의 할 점은 대괄호 안의 공백을 꼭 넣어줘야 합니다
for 문 문법
for 변수 in 값1 값2 값3 ...
do
실행 명령어
done
for문은 javascript에서의 for in loop랑 닮았네요
값의 개수만큼 반복되고, 값1, 값2, 값3가 매 반복마다 차례대로 변수 안에 들어갑니다.
여기서도 마찬가지로 중괄호 대신 done으로 for 문의 끝을 알려줍니다
while 문 문법
while [ 조건 ]
do
실행 명령어
done
if문을 이용해서 간단한 쉘 스크립트 파일 만들기
/etc/passwd 는 시스템에 등록된 사용자의 정보들이 담겨있는 파일입니다.
/etc/passwd 파일 안에서 특정 사용자의 이름을 찾아, 특정 사용자가 존재하는지 알려주는 프로그램을 만들겠습니다.
일단 홈 디렉토리 안에 테스트용 폴더를 하나 만들어줍니다
그리고 vi(리눅스계의 vsc)를 이용해서 test라는 쉘 스크립트 파일을 하나 만들겠습니다
#!/bin/bash
: shell도 하나의 프로그램으로서 여러 종류가 있습니다. 그 중에 bash라는 쉘 프로그램을 선택합니다.
grep $1 $2 > /dev/null
: 찾을 계정의 이름에 해당하는 인자($1)를 받고 파일 안에서 문자가 위치한 부분을 찾아주는 grep을 실행해서 그 결괏값을 /dev/null 이라는 특수 파일로:` 보내 결과값이 출력되지 않도록 합니다.
if [ $? -eq 0 ]; then
: 가장 최근 명령어가 성공적으로 실행되면 $?는 0을 반환합니다. $?가 0과 같은지(-eq)를 판단합니다.
이제 프로그램을 작성했으니 실행을 하겠습니다...만 sh파일은 처음 만들면 실행 권한이 없으므로 파일에 실행 권한을 주겠습니다
이제 프로그램을 실행시켜서 사용자를 찾아보면
제가 사용하고있는 bstudent는 /etc/passwd에 있으므로 Match found가 뜨고
elonmusk라는 계정은 없기 때문에 Match not found가 반환되었습니다
배울랑교 블록체인 중급 과정을 듣고 정리하여 작성했습니다
문법이 조금 이질적이네요ㅋㅋㅋ 리눅스에서 코딩하는것도 신기하고 vi도 vsc 못지않게 친절하구요
배울랑교 수업 재밌습니다