#!/bin/sh
if [ -d $1 ]; then
cd $1
if [ -f $2 -a -s $2 ]; then
echo $2' is file and has contents more than one character.'
array=`cat $1/$2`
for day in ${array}; do
if [ -n ${day} ]; then
if [ ${day} == "Fri" -o ${day} == "Sat" ]; then
echo ${day}' is very happy day!!'
else
echo ${day}' is gloomy day.'
fi
fi
done
else
echo $2' is not file or has zero character.'
fi
fi
앞서 if문 예제 글에서 보여 드렸던 예제 스크립트보단 짧은 스크립트이지만 설명의 편의를 위해 크게 if문과 for문으로 나누어 설명 드리도록 하겠습니다.
1) 첫 번째 섹션 - if문
if [ -d $1 ]; then // 첫 번째 매개변수 값이 디렉토리라면,
cd $1 // 해당 디렉토리로 이동
if [ -f $2 -a -s $2 ]; then // 두 번째 매개변수 값이 파일(-f)이고 그 파일이 내용을 가지고 있다면(-s),
echo $2' is file and has contents more than one character.'
array=`cat $1/$2` // array라는 변수에 두 번째 매개변수인 파일에서 읽어들인 내용을 할당
for day in ${array}; do // for문 시작
~
done // for문 종료
else // 두 번째 매개변수 값이 파일이 아니거나 그 파일이 아무런 내용도 가지고 있지 않다면,
echo $2' is not file or has zero character.'
fi
fi
라인별 설명은 위 내용을 참조하시면 되겠고,
if문의 내용을 한 문장으로 표현하자면,
두 번째 매개변수 값이 파일이고 내용을 가지고 있을 경우엔 for문을 실행시켜 원하는 결과를 얻을 것이고, 그렇지 않다면 echo로 그에 대한 내용만 화면에 보여주겠다는 것입니다.
if문과 관련해선 앞선 글들에서 자세히 설명해 놓았으니 참고하시면 될 것 같습니다.
2) 두 번째 섹션 - for문
for day in ${array}; do
if [ -n ${day} ]; then
if [ ${day} == "Fri" -o ${day} == "Sat" ]; then
echo ${day}' is very happy day!!'
else
echo ${day}' is gloomy day.'
fi
fi
done
array라는 변수에 할당된 값이 파일이고 내용을 가지고 있다는 if문을 통과하였다면 for문을 실행하겠죠?
그렇다면 이 array 변수를 for문에 집어넣고 이제 띄어쓰기 단위로 구분된 단어 하나하나를 끄집어 내어 day라는 변수에 할당합니다.
if문 안의 -n 옵션은 변수의 내용이 null이 아닌지를 판별하는 옵션이므로 day에 할당된 변수값이 null일 경우, 즉 파일의 끝에 도달했을 경우에는 if문을 실행하지 않겠죠.
그 다음 if문은 굳이 설명 드리지 않아도 아실 거라 생각됩니다.
물론 위 스크립트를 실행시키려면 다음과 같은 샘플 파일이 OS 디렉토리 어딘가에 존재해야만 스크립트 실행 시 매개변수로 넣어줄 수 있겠죠.
# cat /tmp/test.txt
Sun Mon Tue Wen Thu Fri Sat
그리고 다음과 같이 실행시키시면 됩니다.
./ForTest.sh /tmp ForTestResult.txt
이상 for문에 대한 간단한 예제였습니다.
'3. OS이야기 > 03. Shell Script' 카테고리의 다른 글
[UNIX/LINUX] Shell Script 기본 - 5.case문 (1) 기본 사용법 및 예제 (0) | 2014.05.07 |
---|---|
[UNIX/LINUX] Shell Script 기본 - 4.while문 (1) 기본 사용법 및 예제 (0) | 2014.05.02 |
[UNIX/LINUX] Shell Script 기본 - 3.for문 (1) 기본 사용법 (0) | 2014.04.28 |
[UNIX/LINUX] Shell Script 기본 - 2.기본 문법 (3) 배열 (0) | 2014.04.24 |
[UNIX/LINUX] Shell Script 기본 - 2.기본 문법 (1) 변수 할당, (2) 수치 계산 (0) | 2014.04.22 |