달력

82022  이전 다음

  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
이번에는 break와 continue를 사용하는 방법을 알아 보도록 하겠습니다. 그런데, 이번에는 C와 동일하게 사용하기 때문에 간단히 설명만 하고 넘어 가도록 하겠습니다.

break : 말그대로 중단 하라는 명령어 입니다.
          for나 while문 수행중 특정한 값이 나오면 중지 할경우 사용을 합니다.

continue : 루프가 반복을 할때 건너 띄우고자 할경우 쓰입니다.
              만약 짝수가 오면 건너 띄워라 이런 식으로 됩니다..^^

자세한 설명은 첨부 하지 않도록 하겠습니다.^^
너무 간단하잖아요..^^

'프로그램메모 > SHELL SCRIPT' 카테고리의 다른 글

[SHELL] break와 continue 사용하기  (0) 2008.01.21
[SHELL] 함수 사용하기  (0) 2008.01.21
[SHELL] AND리스트 OR리스트 알아 보기  (0) 2008.01.21
[SHELL] CASE 문 사용하기  (0) 2008.01.21
[SHELL] 입력받기  (0) 2008.01.21
[SHELL] until문 사용하기  (0) 2008.01.21
Posted by 곰아리

댓글을 달아 주세요

우선 함수란?

함수란....^^  설명을 할려니 고민이 되네요..^^  하나의 덩어리라고 설명을 하면 될까요..^^  실행중에 불러서 쓰게 되죠..^^
그런데, 같은 일을 하는경우 똑같은 코딩을 2번 3번써야하는 경우가 있습니다.
그런경우에 아주 잘쓸수가 있습니다..^^
한번으로 2번 3번 쓰고 싶은 맘큼 쓸수가 있기 때문입니다..^^
프로그램을 구조화 하는데 정말 좋은 방법 입니다..^^

형식

function_name () {
    statements
}

이와 같은 형태로 구성이 됩니다..^^

예제

#!/bin/sh

test() {
   echo "This is Test!!"
}

echo "script starting"
test
echo "script ended"

exit 0

----------------------------------------
결과는 모두 아실것이라고 생각 하겠습니다..^^

이제 지역변수와 전역 변수를 애기를 하겠습니다.

변수는 앞서서 설명을 하였습니다...^^

예제
#!/bin/sh
sample="전역변수"

foo() {
       local sample="지역변수"
       echo "함수내부"
       echo $sample
}

echo "script starting"
echo $sample

foo

echo "script ended"
echo $sample

exit 0
-----------------------------------------------
sample라는 변수가 선언이되고 출력이 된 다음....
foo라는 함수안으로 들어가서 sample는 지역변수로 바뀌어 진후에 쓰이고 다시 돌아와 전역변수의 값으로 돌아 오게 됩니다..^^

결과가 궁금하시다구요..^^ 그럼 실행을 시켜 보시기 바랍니다..^^

결과
-------------------------------------------------
script starting
전역변수
함수내부
지역변수
script ended
전역변수
--------------------------------------------------
결과는 이와 같이 나오게 됩니다.
이해가 되시는지 궁금하군요..^^

그럼 이제 값을 반환 하는 방법을 알아 보도록 하겠습니다..^^

예제
#!/bin/sh
check () {
echo "당신의 이름이 $temp 입니까?"
while true
do
echo -n "당신의 이름이 맞습니까?"
read x
case "$x" in
[yY]*) return 0;;
[nN]*) return 1;;
*) echo "잘못된 입력입니다."
esac
done
}

echo "당신의 이름을 입력하세요"
read temp
if check "$temp"
then
echo "안녕하세요 $temp 방갑습니다."
else
echo "당신은 누구신가요?"
fi
exit 0
---------------------------------------------------
결과를 예측해보시기 바랍니다.

'프로그램메모 > SHELL SCRIPT' 카테고리의 다른 글

[SHELL] break와 continue 사용하기  (0) 2008.01.21
[SHELL] 함수 사용하기  (0) 2008.01.21
[SHELL] AND리스트 OR리스트 알아 보기  (0) 2008.01.21
[SHELL] CASE 문 사용하기  (0) 2008.01.21
[SHELL] 입력받기  (0) 2008.01.21
[SHELL] until문 사용하기  (0) 2008.01.21
Posted by 곰아리

댓글을 달아 주세요

조건문을 할경우 여러게의 if문으로 조건이 맞아야 실행할 경우가 있습니다.

이럴때에는 AND리스트나 OR리시트를 쓰면 됩니다.

AND리스트 : &&
OR리스트 : ||

이 연산자를 가지고 실행을 할수 있습니다.

형식

if [-f file_one] && echo "echo" && [-f file_two ] && echo "ddd"
then
   echo "^^"
else
   echo "T.T"
fi

이런식으로 가능합니다..^^

OR리스트

형식
if [-f file_one] || echo "echo" || [-f file_two ] || echo "ddd"
then
   echo "^^"
else
   echo "T.T"
fi

이와 같은 형식으로 사용이 가능합니다.

'프로그램메모 > SHELL SCRIPT' 카테고리의 다른 글

[SHELL] break와 continue 사용하기  (0) 2008.01.21
[SHELL] 함수 사용하기  (0) 2008.01.21
[SHELL] AND리스트 OR리스트 알아 보기  (0) 2008.01.21
[SHELL] CASE 문 사용하기  (0) 2008.01.21
[SHELL] 입력받기  (0) 2008.01.21
[SHELL] until문 사용하기  (0) 2008.01.21
Posted by 곰아리

댓글을 달아 주세요

이번에는 CASE문을 사용하는 방법을 알아 보도록 하겠습니다.
말그대로 선택하는 문 입니다..^^

형식
case variable in
  pattern [ | parrern] ....) statements;;
  pattern [ | parrern] ....) statements;;
  ...
esac

이와 같은 형식을 가지고 있습니다..^^

여기서 패턴이 끝날때 이중 세미콜론(;;)을 사용하게 됩니다.

예제
#!/bin/sh

echo "당근을 좋아 하나요?(yes/no)"
read temp

case "$temp" in
   yes) echo "당근을 좋아 하시군요..^^";;
   no) echo "당근을 싫어하시군요! 그런 어떤 야채를?";;
   *) echo "yes 아니면 no로 답을 해주세요";;
esac

exit 0

-------------------------------------------------------
이런 식으로 구성이 됩니다..^^

그럼 여러패턴을 사용하는 방법을 알아 보도록 하겠습니다.

예제
#!/bin/sh

echo "당근을 좋아 하나요?(yes/no)"
read temp

case "$temp" in
   yes | y | YES | Y) echo "당근을 좋아 하시군요..^^";;
   n* | N*) echo "당근을 싫어하시군요! 그런 어떤 야채를?";;
   *) echo "죄송합니다. 정확히 입력해주세요!";;
esac

exit 0

-------------------------------------------------------
이와 같이 구성을 하여 사용할수 있습니다..^^

이것에서 [yY] | [Yy] 이와 같은 형태로 만들수도 있습니다.

그럼 이제 여러 문장을 실행 하는 방법을 알아 보도록 하겠습니다.

더할껀지 뺄건지 확이해서 계산하는 프로그램을 작성 해보도록 하겠습니다..

예제
#!/bin/sh

echo "두수는 덧셈인지 뺄셈인지 선택하세요"
read val
echo "첫번째 수를 입력하세요:"
read first
echo "두번째 수를 입력하세요:"
read sec

case "$val" in
   +) echo `expr $first + $sec`
       echo "입니다";;
   -) echo `expr $first - $sec`
       echo "입니다.";;
   *) echo "잘못된 연산자 입니다.";;
esac
---------------------------------------------
아주 간단한 스크립트 입니다.^^

case문에 대하여 이해를 하셨는지 궁금하군요..^^

'프로그램메모 > SHELL SCRIPT' 카테고리의 다른 글

[SHELL] 함수 사용하기  (0) 2008.01.21
[SHELL] AND리스트 OR리스트 알아 보기  (0) 2008.01.21
[SHELL] CASE 문 사용하기  (0) 2008.01.21
[SHELL] 입력받기  (0) 2008.01.21
[SHELL] until문 사용하기  (0) 2008.01.21
[SHELL] while 문 사용하기  (0) 2008.01.21
Posted by 곰아리

댓글을 달아 주세요

C 같은 scanf로 하여 입력을 받게 됩니다..^^

SHELL도 프로프트 상에서 입력을 받을수 있습니다...^^

어떻게 받는지 알아 보도록 하겠습니다..^^

예제
#!/bin/sh

echo "이름을 입력하세요..: "
read name
echo "당신의 이름은 $name 입니다."

--------------------------------------------------
아주 간단한 프로그램 입니다.

그럼 두수를 입력 받아 덧셈을 하는 프로그램을 만들어 보도록  합시다..^^

예제
#!/bin/sh
echo "첫번째 수를 입력하세요:"
read temp
echo "두번째 수를 입력하세요:"
read temp2

echo `expr $temp +  $temp2`
-------------------------------------------
아주 간단하게 두수를 더하는 스크립트를 만들수 있습니다.

간단하게 입력을 받을수 있습니다.

그러나, SHELL은 이와 같이 사용자에게 입력을 받는일은 그렇게 많지 안습니다.

'프로그램메모 > SHELL SCRIPT' 카테고리의 다른 글

[SHELL] AND리스트 OR리스트 알아 보기  (0) 2008.01.21
[SHELL] CASE 문 사용하기  (0) 2008.01.21
[SHELL] 입력받기  (0) 2008.01.21
[SHELL] until문 사용하기  (0) 2008.01.21
[SHELL] while 문 사용하기  (0) 2008.01.21
[SHELL] for를 사용  (0) 2008.01.21
Posted by 곰아리

댓글을 달아 주세요

until문은 while문과 동일합니다..^^

그러나, while문 조건이 반대가 됩니다.
while 루프와 매우 비슷하지마, 테스트 조건이 반대이다. 다시 말해 루프는 조건이 참인 동안이 아니라 참이 될때까지 계속 한다.

until문은 어떤 결과가 발생할 때까지 계속해서 반복하기 원하는 경우에 적합핟. 예를 들어, 우리가 명령 라인에서 입력한 로그인 이름을 다른 사용자가 이용한 때 동작하는 경보를 설정 할수 있다.

그럼 한번 맹글어 봅시다..^^

예제
#!/bin/sh

until who | grep "$1" > /dev/null
do
    sleep 60
done

#경고음을 내고 사용자게 알려준다.

echo -e \\a
echo "***** $1 has just logged in *****"

exit0
-----------------------------------------------------
이렇게 프로그램을 맹글수 있습니다.

쉘은 이런 목적으로 사용합니다..^^

'프로그램메모 > SHELL SCRIPT' 카테고리의 다른 글

[SHELL] CASE 문 사용하기  (0) 2008.01.21
[SHELL] 입력받기  (0) 2008.01.21
[SHELL] until문 사용하기  (0) 2008.01.21
[SHELL] while 문 사용하기  (0) 2008.01.21
[SHELL] for를 사용  (0) 2008.01.21
[SHELL] IF문의 예제...  (0) 2008.01.21
Posted by 곰아리

댓글을 달아 주세요

앞에 했던 for문은 일정한 회수의 반복문 이다.
그러나, 우리는 어떠한 규칙이 적용 되었을때까지 실행하는 프로그램을 작성하는 경우가 있다 이때 사용하는 구문이 while입니다.

형식
while condition do
     statements
done

이와 같은 형태로 구성이 되어있습니다.

앞에서 작성한 1~10까지 더하는 프로그램을 while구문으로 변경을 하도록 해보겠습니다.

예제
#!/bin/sh
temp="0"
total="0"
while [ $temp -le 10 ]; do
   total=`expr $total + $temp`
   temp=$(($temp+1))
done
echo "$total"
----------------------------------------
결과는 모두 아실거라고 밑습니다.

조금은 for보다 심플하게 변경 되었습니다..^^

le --> 더 작거나 같다면 참($a -le $b)

temp=$(($temp+1))  : 증가 연산을 하게 됩니다.

이렇게 구성이 됩니다.

간단히 while문을 구성할수가 있습니다.

while은 여기서 끝내도록 하겠습니다.

'프로그램메모 > SHELL SCRIPT' 카테고리의 다른 글

[SHELL] 입력받기  (0) 2008.01.21
[SHELL] until문 사용하기  (0) 2008.01.21
[SHELL] while 문 사용하기  (0) 2008.01.21
[SHELL] for를 사용  (0) 2008.01.21
[SHELL] IF문의 예제...  (0) 2008.01.21
[SHELL] 쉘 제어구조..^^(if구문)  (1) 2008.01.21
Posted by 곰아리

댓글을 달아 주세요

for문은 어느때 사용하는지 생각을 해봅시다....^^
일차적으로..^^ hello를 열번 찍어야 한다면..^^
echo "hello"
echo "hello"
echo "hello"
-------
이렇게 10번을 해주면 되겠죠..^^
그런데, for문을 사용하게 되면..^^  간단히 4줄내에 끝이 나게 되죠..^^

우선 형식을 알아 보도록 하죠..
for varilble in values
do
      statements
done
이와 같은 형식을 취하게 됩니다.
for [변수] in [값]
do
         [수행문]
done
이렇게 구성이 됩니다.

예제
#!/bin/sh
for temp in 1 2 3 4 5 6 7 8 9 10
do
echo "hello"
done
-----------------------------------
이와 같은 형태로 되겠죠..^^

그럼 이제 1~10 까지 더해서 합을 구하는 스크립트를 작성 해보도록 합시다.

예제
#!/bin/sh

total="0"
for temp in 1 2 3 4 5 6 7 8 9 10
do
    total=`expr $total + $temp`
done
echo $total

--------------------------------------
결과는 모두 아시죠..^^

이와 같이 해서 결과를 얻어 낼수가 있겠지요..^^

'프로그램메모 > SHELL SCRIPT' 카테고리의 다른 글

[SHELL] until문 사용하기  (0) 2008.01.21
[SHELL] while 문 사용하기  (0) 2008.01.21
[SHELL] for를 사용  (0) 2008.01.21
[SHELL] IF문의 예제...  (0) 2008.01.21
[SHELL] 쉘 제어구조..^^(if구문)  (1) 2008.01.21
[SHELL] 대화모드 사용하기  (0) 2008.01.21
Posted by 곰아리

댓글을 달아 주세요

예제1) 현재의 SHELL을 알아 bash이면 true라고 출력하고 다른것이면, False라고 출력하기...^^
---------------------------------------------------------
#!/bin/sh
if [ "$SHELL" = "/bin/bash" ] then
echo "True"
else
echo "False"
fi
---------------------------------------------------------
아주 간단하죠..^^

예제2)test라는 변수를 만들고 1일때와 2일때 아니면 3일때 변화를 나타내는 구조를 만들어 보도록 하겠습니다.
---------------------------------------------------------
#!/bin/sh
if [ "$test" = "1" ] then
echo "1"
elif [ "$test" = "2" ] then
echo "2"
else
echo "3"
fi
---------------------------------------------------------
이런식으로 이루어지겠죠..^^
뭐하는거냐구요..^^ 그냥 화면에 뿌려주기만 합니다..^^

이렇게 if문이 구성이 됩니다..

예제3)디렉토리안에 있는 파일이 자신소유의 파일인지 자신과 같은 그룹의 파일인지 체크하는 프로그램을 만들어 보죠..^^
---------------------------------------------------------
#!/bin/sh
if[ -O test.txt ] then
echo "내소유입니다."
elif [ -G text.txt ] then
echo "내가속한 그룹의 파일입니다."
else
echo "나하고 상관없는 파일입니다."
fi
---------------------------------------------------------
아주 간단하죠..^^

'프로그램메모 > SHELL SCRIPT' 카테고리의 다른 글

[SHELL] while 문 사용하기  (0) 2008.01.21
[SHELL] for를 사용  (0) 2008.01.21
[SHELL] IF문의 예제...  (0) 2008.01.21
[SHELL] 쉘 제어구조..^^(if구문)  (1) 2008.01.21
[SHELL] 대화모드 사용하기  (0) 2008.01.21
[SHELL] 쉘 에서 변수 선언하기  (0) 2008.01.21
Posted by 곰아리

댓글을 달아 주세요

기본적으로 셀 명령을 쓸줄 아는것으로 하고 넘어 가겠습니다..^^

제어 구조를 이야기 해보죠..^^

if는 참인지 거짓인지 판단할때 사용한다.
참이라면 then 부분을 실행하고 그렇지 않다면 else 부분을 실행한다.
---------------------------------------------------------
if .....
then
....
else
....
fi
---------------------------------------------------------
문자열비교
[ string ] : string이 빈 문자열이 아니라면 참
[ string1 = string2 ] : 두 문자열이 같다면 참
[ string1 != string2 ] : 두 문자열이 다르면 참
[ -n string ] : 문자열이 null(빈 문자열) 이 아니라면 참
[ -z string ] : 문자열이 null(빈 문자열) 이라면 참

산술비교
[ expr1 -eq expr2 ] : 두 표현식 값이 같다면 참 ( EQual )
[ expr1 -ne expr2 ] : 두 표현식 갑이 같지 않다면 참 ( Not Equal )
[ expr1 -gt expr2 ] : expr1 > expr2 이면 참 ( Greater Then )
[ expr1 -ge expr2 ] : expr1 >= expr2 이면 참 ( Greater Equal )
[ expr1 -lt expr2 ] : expr1 < expr2 이면 참 ( Less Then )
[ expr1 -le expr2 ] : expr1 <= expr2 이면 참 ( Less Equal )
[ ! expr ] : expr 이 참이면 거짓, 거짓이면 참
[ expr1 -a expr2 ] : expr1 AND expr2 의 결과 ( 둘다 참이면 참 )
[ expr1 -o expr2 ] : expr1 OR expr2 의 결과 ( 둘중 하나만 참이면 참 )

파일조건

[ -b FILE ] : FILE 이 블럭 디바이스 이면 참
[ -c FILE ] : FILE 이 문자 디바이스 이면 참.
[ -d FILE ] : FILE 이 디렉토리이면 참
[ -e FILE ] : FILE 이 존재하면 참
[ -f FILE ] : FILE 이 존재하고 정규파일이면 참
[ -g FILE ] : FILE 이 set-group-id 파일이면 참
[ -h FILE ] : FILE 이 심볼릭 링크이면 참
[ -L FILE ] : FILE 이 심볼릭 링크이면 참
[ -k FILE ] : FILE 이 Sticky bit 가 셋팅되어 있으면 참
[ -p FILE ] : True if file is a named pipe.
[ -r FILE ] : 현재 사용자가 읽을 수 있는 파일이면 참
[ -s FILE ] : 파일이 비어있지 않으면 참
[ -S FILE ] : 소켓 디바이스이면 참
[ -t FD ] : FD 가 열려진 터미널이면 참
[ -u FILE ] : FILE 이 set-user-id 파일이면 참
[ -w FILE ] : 현재 사용자가 쓸 수 있는 파일(writable file) 이면 참
[ -x FILE ] : 현재사용자가 실행할 수 있는 파일(Executable file) 이면 참
[ -O FILE ] : FILE 의 소유자가 현재 사용자이면 참
[ -G FILE ] : FILE 의 그룹이 현재 사용자의 그룹과 같으면 참
[ FILE1 -nt FILE2 ] : FILE1이 FILE2 보다 새로운 파일이면 ( 최근파일이면 ) 참
[ FILE1 -ot FILE2 ] : FILE1이 FILE2 보다 오래된 파일이면 참
[ FILE1 -ef FILE2 ] : FILE1 이 FILE2의 하드링크 파일이면 참

정수 비교
-eq 같다면 참($a -eq $b)

-ne 다르다면 참($a -ne $b)

-gt 더 크다면 참($a -gt $b)

-ge 더 크거나 같다면 참($a -ge $b)

-lt 더 작다면 참($a -lt $b)

-le 더 작거나 같다면 참($a -le $b)

문자열 비교

= 같다면 참($a = $b)

!= 다르다면 참($a != $b)

\< 아스키 코드 순서에서 더 작다면 참($a \< $b)

주의 : "<" 는 이스케이프 시켜야 됩니다.

\> 아스키 코드 순서에서 더 크다면 참 ($a \> $b)

주의 : ">" 은 이스케이프 시켜야 됩니다.

비교 연산자를 쓰는 어플리케이션 예제 참고 예 3-90

-z 문자열이 "널"이면 참. 즉, 길이가 0

-n 문자열이 "널"이 아니면 참.
---------------------------------------------------------
이와 같은 조건들이 있다 이것에서 자신이 원하는것을 찾아서 쓰면 된다..^^

우리가 자주 rc.local 파일에 mysql데몬 실행이나 firewall 파일을 올리는 경우가 있다.
이때 쓰면 좀더 멋있게 만들수가 있다.

--------------------------------------------------------
if [ -f /usr/local/mysql/bin/safe_mysqld ] then
/usr/local/mysql/bin/safe_mysqld &
fi

--------------------------------------------------------
이와 같이 하면 좀더 이쁘게 보일수 있죠..^^
해석은 파일이 존재하면 참이 되어 MySQL을 실행 시키라는 거죠..^^

--------------------------------------------------------
if 문은 조건을 판단하여 주어진 문장을 수행합니다.

1. 형식 1 ( 단일 if 문 )
형식 :
if [ 조건 ]
then
문장1
문장2
fi

2. 형식 2 ( if~else 문 )
형식 :
if [ 조건 ]
then
문장1
문장2
else
문장3
문장4
fi

3. 형식 3 ( if~elif 문 )
형식 :
if [ 조건 ]
then
문장1
문장2
elif
문장3
문장4
else
문장5
문장6
fi
---------------------------------------------------------
문자의 구조 입니다.이런 형태로 if문은 구성이 됩니다.

이렇게 만들면 되겠죠..^^

'프로그램메모 > SHELL SCRIPT' 카테고리의 다른 글

[SHELL] for를 사용  (0) 2008.01.21
[SHELL] IF문의 예제...  (0) 2008.01.21
[SHELL] 쉘 제어구조..^^(if구문)  (1) 2008.01.21
[SHELL] 대화모드 사용하기  (0) 2008.01.21
[SHELL] 쉘 에서 변수 선언하기  (0) 2008.01.21
[SHELL] 쉘 주석 만들기...  (0) 2008.01.21
Posted by 곰아리

댓글을 달아 주세요

  1. Favicon of http://starplaying.tistory.com BlogIcon starplaying  댓글주소 수정/삭제 댓글쓰기 2009.04.13 22:05

    좋은정보 감사합니다.^^
    담아가서 열공하게요