[쉘스크립트] 휘슬의 실행스크립트 if문을 짜다

2013. 4. 1. 19:51기술집/서버관련

728x90

 

휘슬을 cron 지정실행시 주의사항.

우선 매일 오전 4시 45분에 휘슬검사를 하도록 cron 에 등록을 해 놓았다.
그리고 실행할 쉡스크립트 파일을 만들었다.

이 스크립트는 cron에 의해 매월 1일부터 말일까지 아주 잘 돌고있었다.

출근해서 메일을 확인해보면 결과가 메일로 날아와있다.

이 메일송신은 휘슬에서 제공이 되고있다. ㅋㅋ

 

하지만 매월 1일이 되면 검사가 안되는 현상이 발생을 해서
일일이 서버에 들어간 다음 직접 실행을 시켜주면 어김없이 뜨는것이
지난 검사이력을 지울것인지를 물어본다.
이부분 스샷을 찍었어야하는데.. 경황이 없었다..;;;;

아무튼.. 그럴때는 휘슬 사용자 안내서를 보면 -s 라는 옵션으로 해쉬파일과
지난 검사이력을 지워주는 아주 고마운 옵션이 있다.
그래서 매월 1일에는 이 옵션을 붙여서 초기검사를 해볼까.. 하고 cron에 추가를
하려다가.. 쉘스크립트의 if 문을 사용해서 하면 오히려 불필요한 중복검사를 피할수
있지않은가!! 라는데 눈치를 채서 이래저래 알아봤다.

 

쉡스크립트는 참.. 익숙해지지 않으면 어렵다.

아무튼.. 내가 추가하려는건 아주 간단한 if문이라서 금방 알았다.

if문을 쓰는 형식은 다음과 같다.

 

 


조건 1만 만족시킬때 사용하는 구문


if [ 조건1 ]
then
조건1에 만족할 때 실행할 명령
fi

 

 

조건1과 그이외의 모든것을 나눌때 사용하는 구문

 

if [ 조건1 ]
then
조건1에 만족할 때 실행할 명령
else
조건1 이외의 상태일때 실행할 명령
fi

 

 

여러개의 조건과 그  이외의 조건을 나눌때 사용하는 구문

 

if [ 조건1 ]
then
조건1에 만족할 때 실행할 명령
elif [ 조건2 ]
조건2에 만족할 때 실행할 명령
else
위의 조건들에 만족하지 않을때 실행할 명령
fi

 


 


이런식이다.
기존의 프로그래밍에서 조건을 [] 로 감싸는것과 then, elif 그리고 fi로 끝나는것이
다른점이었다.

그렇게.. 먼저 오늘 날짜를 구해서 if [ 조건1 ] 에 해당하는 부분에 적었다.
하지만 그부분이 계속 에러가 나네..;;

 

 

일단.. 비교연산자까지 찾아보질않았었고..

그냥 PHP에서 하던대로 == 를 사용해봤었다.

하지만 보통 숫자인경우 뭔가 있었던것같아서 찾아보니 이런게 있었다..

 

 

-eq : 양쪽의 값이 같을때

-lt : 좌측의 값이 우측의 값보다 작은경우

-gt : 좌측의 값이 우측의 값보다 클 경우

 

중요한건 이렇게 바꿔줘도.. 에러가 나고있다는것..

그래서 소스에 뭔가 문제가 있는가싶어서 다시 찾아봤다.

 

 

내가 보고 만든 if문.

오늘이 1일이라면 " today is 1 " 이라고 출력하고,

아니라면  " today is not 1 " 이라고 출력을 하게 했다.

크게 잘못된 부분은 보이지가 않아서 자세히 찾아보기로했더니..

이런 함정이...

 

if [ 조건1 ]  이렇게 조건부분을 작성할때..
if[ 조건1 ] 이런식으로 if 다음에 공간없이 [ 가 오면 에러가 납니다 ㅠㅠ
반드시 if [ 조건1 ] 이런식으로 띄워서 작성해야한다고합니다..

 

이런..;;;;
그러고보니.. 예전에 Linux를 배울때 쉘 스크립트에서 이런 얘기를 들은적이 있습니다.
쓸데없이 보기좋게 하려고 스페이스를 넣다가는 끝없는 오류에서 헤매이게 될것이다..

 

 

그래서 적힌대로 이렇게 바꿨다.

 

아싸 ㅋㅋㅋㅋㅋ

쉘스크립트는 역시 공부를 하지 않으면 안되는구나..

아직 입문도 안된상태인데..

서버 관리를 본격적으로 할것은 아니기에.. 조금 천천히 해야겠구나 ㅋㅋㅋ

 

아무튼.. 다음달 1일에도 문제없이 메일이 날아오면 이 스크립트도 성공이구나!!

오늘도 공부하나..

 

728x90