달력

5

« 2024/5 »

  • 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

'쉘 제어구조'에 해당되는 글 1

  1. 2009.04.13 [SHELL] 쉘 제어구조..^^(if구문)
2009. 4. 13. 22:06

[SHELL] 쉘 제어구조..^^(if구문) Enjoy/etc2009. 4. 13. 22:06


출처 : http://bear.sage.kr/28

[SHELL] 쉘 제어구조..^^(if구문)

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

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

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문은 구성이 됩니다.

:
Posted by 라면스프