운영체제/리눅스

[리눅스] 쉘스크립트_1

Cloud_Park 2022. 7. 31. 12:19

2022.07.11 - [운영체제/리눅스] - [리눅스] GCC 입문

2022.07.13 - [운영체제/리눅스] - [리눅스] GDB 디버거 _1

2022.07.24 - [운영체제/리눅스] - [리눅스] GDB디버거_2

2022.07.24 - [운영체제/리눅스] - [리눅스] Make 및 Makefile


쉘스트립트 개요

쉘 스크립트는 쉘이나 명령어 줄 인터프리터에서 돌아가도록 작성되었거나 운영 체제를 위해 쓰인 스크립트,

단순 도메인 고유언어로 여기기도하고 쉡스크립트가 수행하는 일반기능으로, 실행, 문자열 출력

장점

쉡 스크립트는 다른 프로그램 언어의 같은 코드로 쓰인 것보다 훨씬 더 빠른 경우가 있다.

다른 해석 언어에 비해 쉘스크립트는 컴파일 단계가 없기 때문에 디버킹 하는 동안 빠르게 동작한다.

단점

스크립트 내에 많은 명령어들이 수행될 경우 각 명령어에 대한 프로세스의 필요에 따라 프로세스들이 생성됨을 필요로함 속도가 느려질 수 있다.

단순 쉘 스크립트는 다양한 종류의 유닉스, 리눅스, BSD등 운영체제의 시스템 유틸리티와 잘 호환된다는 장점이 있지만 복잡한 쉘 스크립트의 경우, 유틸리티, 다른 필수 요소 간의 차이가 발생하는 경우 실패가능성이 있다.

 

 

 

쉘 변수

echo "text"
#echo라는 명령어가 수행 / text라느 문자열 표준입력

shvar="text"
##변수선언 주의: "=" 사이에 공백이 없다

echo $shvar
##변수 값 호출은 $를 사용

cp $olddir $newdir
##명렁어들에도 사용가능

$shvar=""
#저장된 값을 지울 수 있다.

mv $myfile #myfile2
#myfile이라는  쉘 변수에 파일이름이 있고 같은 이름을 가지고 있지만 myfile2가 다른 쉘변수라 생각함


mv $myfile ${myfile}2
#와같이 사용가능



$1
#$(number)를 통해 쉘 프로그램 매개변수를 참조할 수 있다.
# $1 첫번째 매개변수 $2는 두전째

$#
#매개변수의 개수

$*
#쉘 프로그램 매계변수 전체 내용

$$
#쉘 프로그램 실행 프로세스 아이디

$!
#쉘프로그램이 실행시킨 백그라운드 ID
	
$?
#쉘 프로그램이 실행한 프로그램 종료값

 

 

의사결정

인수와 변수에 대한 조건부 테스트를 수행하고 결과에 따라 다른 명령을 실행할 수 있다.

#!/bin/bash
if["$1"="fork"]
then
	echo "fork not allowed."
 exit
elif['$1'="knife"]
then
	echo "knife not allowed."
	exit
else
	echo "fork & knife not allowed"
	fi
echo "spoon please"


###
chmod +x 스트립트네임.sh

 

 

 

 

case 문법

----
case "$1"
in
	"fork") echo "fork"
		exit;;
	"knife") echo "knife"
		exit;;
	*) echo "fork&knife"
esac


======
반복분

----
for var in vari vari2
do
	command
done

while [condition]
do
	command
done

 

 

함수

func_name()
{
	command
}