제어 구조
제어 구조는 당신의 프로그램을 보다 간결하게 하며, 프로그램이 결정을 내릴 수 있게 한다. 뿐만 아니라, 더욱 중요한 것은 에러를 체크하도록 할 수 있다는 것이다. 지금까지 우리가 본 예제는 모두 첫번째라인에서부터 마지막 라인까지 프로그램의 모든 명령을 실행하는 프로그램이었다. 예를 들면 다음과 같은 방식이다:
#!/bin/bash
cp /etc/foo .
echo "Done."
이것은 bar.sh란 작은 프로그램인데, /etc/foo란 파일을 현재의 디렉토리로 복사하고는 화면에 "Done"이라고 프린트한다. 이 프로그램은 한 가지 조건 하에서 작동한다. /etc/foo라고 하는 파일이 반드시 존재해야만 한다. 그렇지 않다면 다음과 같은 화면을 보게 될 것이다:
xconsole$
./bar.sh
cp: /etc/foo: No such file or directory
Done.
당신이 보듯이, 문제가 있다. 당신의 프로그램을 실행하는 모든 사람이 그들의 시스템에 /etc/foo라는 파일을 가지고 있지는 않다. 그래서 /etc/foo라는 파일이 있는지 체크해서 만일 그 파일이 있으면 복사하도록 하고, 그렇지 않다면 끝나도록 당신의 프로그램을 수정하는 편이 좋을 것이다. 의사 코드(pseudo code)로 이 내용을 나타내면 다음과 같다:
만일
/etc/foo
가
존재하면
,
/etc/foo
를
현재
디렉토리로
복사한다
화면에
"Done."
을
출력한다
.
그렇지 않으면,
화면에
"This file does not exist."
을
촐력한다
exit
이것을 bash에서 할 수 있을까? 물론! bash의 제어 구조에는 if
, while
, until
, for
, case
가 있다. 각 구조는 시작을 나타내는 starting tag와 끝을 나타내는 ending tag로 쌍을 이루고 있다. 예를 들면, if 구조는 if로 시작해서 fi로 끝난다. 제어 구조는 당신의 시스템에서 발견되어지는 프로그램이 아니다. 그것들은 bash의 내재된 특성이다. 이러한 제어 구조를 이용해서, 단지 시스템의 프로그램만을 이용해서 쉘 프로그램을 만드는 것에 그치지 않고 당신 자신만의 고유한 코드를 작성할 수 있다.
if..then else 다음에...
'경험치바(Experience Opint Bar)' 카테고리의 다른 글
리눅스 커널 버전 확인 방법 (0) | 2016.01.06 |
---|---|
리눅스 종류/버전/배포판 확인하기 (0) | 2016.01.06 |
bash 쉘 변수 (0) | 2015.12.24 |
bash 쉘 주석 (0) | 2015.12.24 |
bash 쉘 백업 프로그램 (0) | 2015.12.24 |