쉘 스크립트

쉘 스크립트라고 한다면 cat, awk등으로 생각할 수 있지만 쉘 스크립트 즉 .sh는 이러한 Unix커맨드등을 나열해서 실행시키는 것이다.
따라서 어떠한 조건으로 언재 어떠한 명령을 내릴 수 있는지 설정할 수 있다.

가장 기본적인 echo명령어를 사용하여 화면에 Hello, World!를 표시한다.

#!/bin/sh

echo "Hello, World!"

리눅스 명령어는 전부 bin폴더에 존재한다.

파이프, 리다이렉션, 반복문, 조건문, 매크로(명령어)등을 사용한다면 쉘스크립트의 능력이 크게 증가한다.

  • 맨위에 작성하는 #!/bin/sh는 시스템에 쉘스크립를 사용함을 알려준다. (쉘에는 여러 종류가 있지만 )
  • 주석은 #을 앞에 사용해서 작성한다.
  • 특수문자를 사용할 땐 \를 앞에 쓴다.

  • 변수 사용방법
    • 변수이름은 영문,숫자,언더바가 사용된다.
    • 값을 전달할 때는 =의 앞,뒤에 공백없이 작성한다.(문자열의 경우 ““로 감싼다.)
    • 변수를 엑세스할때 $를 넣어서 사용한다.
    • readonly를 사용하여 읽기전용으로 만들 수 있다.
    • unset으로 삭제가능(readonly를 불가능하다.)
#!/bin/sh

var="변수1"

echo "var=$var"

var="변경"

echo $var

++ 명령어의 실행결과를 변수에 담고 싶다면 $()로 감싸서 저장할 수 있다.

a=$(ls -al)
echo $a
  • 특별한 변수
    • $0: 스크립트 명
    • $1~9: 인수, 첫번째인수는 &1로 접근…&9로 접근
    • $#: 스크립트에 전달딘 인수의 수
    • $*:모든 인수를 하나로 처리
    • $@:모든 인수를 각각 처리
    • $?: 직전에 실행한 커맨드의 종료 값(0은 성공, 1은 실패)
    • $$:이 쉘 스크립트의 프로세스 ID
    • $!: 마지막으로 실행한 백그라운드 프로세스 ID
  • 배열사용법
#!/bin/sh

#배열만드는 법
ARRAY=(a b c d)
ARRAY[0]="42"
ARRAY[2]="24"

#배열 인자 출력
echo "ARRAY[0]: ${ARRAY[0]}"

#모든 인자 액세스
echo "ARRAY[*]: ${ARRAY[*]}"

리다이렉션

리다이렉션이란, 출력방향이나 입력방향을 재지정할 수 있는 명령어이다.

정확히는 해당 스트림의 방향을 지정할 수 있다.

앞서 리눅스 스트림에 대해서 다루었기 때문에 해당 페이지를 참고!

리눅스 스트림 페이지

<,<<,>,>>으로 사용할 수 있다.

  • <,<<은 입력(0)방향을 재지정하는것
cat < /bin/cat // cat /bin/cat 같음
  • >,>>은 출략방향을 재지정하는 것으로 기본적인 모니터 출력의 방향을 변경할 수 있다.
cat /bin/cat > result.txt

>>은 덮어쓰기이다.

파이프

앞명령어의 결과값에 대한 명령어를 적용할 수 있다. (중복가능)

정확히는 서로 다른 프로세스간 작동하는 방식이다.

cat /bin/cat   grep “^d”

조건문

if [조건식] then 커맨드 fi

위의 양식이 기본적인 조건문 사용 방법이다.

#!/bin/sh

if [ "$1" -eq "$2" ]
then
	echo "동일하다."
else
	echo "다르다."
fi

조건식이 올바른 경우는 then아래 절이 실행되고 다를경우 else가 실행된다.

elif로 else if문을 만들 수 있다.

fi를 만나면 if문이 종료된다.

이미지

반복문

while [조건식] do 반복식 done

위의 양식이 기본적인 반복문 사용방법이다.

#!/bin/sh

a=0
while [ $a -lt 5 ]
do
	echo $a
	a=`expr $a + 1`
done

while의 조건이 만족한다면 do아래의 반복문이 실행되도 조건이 틀리다면 done을 만나서 종료된다.

이미지

이외에도 for문, switch문등 다양하게 지원한다.

함수

아래와 같이 함수로 작성도 가능하다.

#!/bin/sh

Function () {
	echo "함수 호출 테스트"
}

Function

이미지

댓글남기기