bash 쉘을 이용한 스크립트 만들기 #2
0. 개요
앞에서 기본적인 출력 방법이나 변수 선언등에 대해 알아보았다
이벤에는 제어구문중 분기에 대해 알아보고
분기에 필요한 비교연산자에 대하 간략히 알아보도록하자
1. 비교연산자
분기(조건문)에서 조건에 대한 비교를 위해
그리고 다양한 조건의 병합을 위해 사용된다
수 비교
-eq 같다 if [ "$a" -eq "$b" ] -ne 같지 않다 if [ "$a" -ne "$b" ] -gt 초과 if ["$a" -gt "$b" ] -ge 이상 if [ "$a" -ge "$b" ] -lt 미만 if [ "$a" -lt "$b" ] -le 이하 if [ "$a" -le "$b" ]
문자열 비교
= ,== 같다 if [ "$a" = "$b" ] != 같지 않다 if [ "$a" != "$b" ] -z 문자열이 "null"임. 즉, 길이가 0 -n 문자열이 "null"이 아님.
기타 비교 -f 파일이 존재하는지 확인한다 -d 디렉토리가 존재하는 확인한다
2. 분기 (if)
분기에 대표적인 것은 if와 switch이다
둘다 조전에 따라 참인지 거짓인지 판별하여 수행하도락 하는 부분이다
먼저 if 에 대해 알아보도록하자
------------------------------------------------------------------------------ #!/bin/bash if [ "test" = "test" ]; then echo "ture" fi
print true ------------------------------------------------------------------------------ #!/bin/bash if [ "test" = "test" ]; then echo "true" else echo "false" fi
print true -------------------------------------------------------------------------------
위의 예는 이해를 돕기 위해 작성한부분이며
실제로는 아래의 형태와 같이 변수와 함께 사용된다
-------------------------------------------------------------------------------
#!/bin/bash
test="1" test1="2"
if [ "$test" = "$test1" ]; then echo "true" else echo "false" fi
print false -------------------------------------------------------------------------------
2. 분기 (case)
동일한 조건하에 여러가지로 분기를 해야할경우
자주쓰이는 case 문에 대해 알아보자
-------------------------------------------------------------------------------
#!/bin/bash
$test="red"
case "$test" in "red") echo "ff0000" ;; "green") echo "00ff00" ;; "blue") echo "0000ff" ;; *) echo "error" ;; esac
print ff0000 -------------------------------------------------------------------------------
각케이스 끝에는 ;;표시하여 분기의 끝점이면 알려주어야한다 .
3. 간단한 예제
특정 프로세의 수를 세어 10개 이상이면 콘솔상에 특정 문자를 출력하는
것에 대해서 알아보자
------------------------------------------------------------------------------- #!/bin/bash
process_name="httpd"
process_max_cnt="10"
process_cnt="`ps -ef | grep $process_name | grep -v "grep" | wc -l`"
if [ "$process_cnt" -gt "$process_max_cnt" ] ; then echo " $process_name : $process_cnt " fi -------------------------------------------------------------------------------
위와같이 작성이 된다면 httpd라는 프로세서의 갯수가 10개 초과이라면
해당 스크립트를 실행시킬시에 "httpd : 11" 과 같은 형식으로 출력이 된다 .
4. 마무리
이번에는 bash를 용한 쉘 프로그래밍을 하기 위한 분기 및 비교 연산자 부분에 대해 알아보았다
다른언어에 비해 크게 어렵거나 하지는 않지만 분기문에서 bash쉘 버전에 따라 약간식 오류가 나는부분이 있을수도 있다 이부분은 대부분이 변수 비교 부분에서 "$a" -gt "$g" 이런식으로 "를 이용하면 회피가가능하다 .
그리고 쉘프로그래밍은 시스템관리시에 유용하게 많이 사용되며 소목적인 반복작업에서 구해줄 친구이다
|
[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1716