[Linux] 쉘스크립트 if문 조건 오류 - integer expression expected

2022. 7. 4. 17:05기술집/서버관련

728x90

 

아. 이거 이사하기 전에 다음블로그에 써야하는데...

어쩌다보니 옮기고 나서 씁니다.

 

서명이 다음블로그껄로 들어있어서..

똑같이 센터로 맞춰봅니다 ㅋ

 

오늘 회사에서 국내사이트쪽 백업을하는데... 뭔가 오류가 뜹니다.

뭔가 했더니.. 우리 웹호스팅 용량이 작아서 디스크 부족...헐..

일단 한단계 윗등급으로 올리고, 앞으로 계속 늘어날거라서

 

파일서버를 하나 놔두는것보다 그냥 증분백업을 해보기로 하고

예전 기억을 더듬어 쉘스크립트를 수정했습니다.

 

 

그런데.... 뭔가 자꾸 에러가 뜹니다 ;;;

 

 

 

일단 쉘스크립트 if 조건문을 열심히 검색해서 넣었습니다.

PHP 생각하면서 여러개를 넣으니까 오류가 계속 떠서 

몇개인가를 중첩으로 입력했습니다.

 

웹호스팅이가 crontab에 접근이 안되는 이유로....

스크립트를 수동으로 실행할때 4개월에 한번씩.

첫째주 월요일에만 풀백업을 진행하고

나머지는 전부 증분백업을 진행하는 구조로 생각했습니다.

그래서.. 열심히 세어보니 1일~7일까지. 

이중에 월요일이면 첫째주 월요일이 매칭이 되더라구요.

1일이 월요일일경우에는 7일은 일요일입니다 ㅎㅎㅎ

 

 

아무튼.. 저렇게 if문을 짜는데...

PHP 같으면 괄호 하나 묶어서

 

if( ($month == 1 || $month == 5 || $month == 9) && $day < 8 ){...

 

이렇게 만들어서 진행하면 되는데..

쉘스크립트는 그게 안됩니다...????

하나 안에서 여러개를 넣으니까 자꾸 너무 많이넣었다고 하고...

괄호로 묶을수가 없으니.. 

 

두번 짜는수 밖에 없었습니다 ㅠㅠ

암튼. 에러를 대비해 출력을 하면서 실행을 해 봅니다.

 

 

 

음...??? 59번째 줄이랑 70번째 줄에서 에러가 뜹니다.

위에서 흰색 줄 그어둔 부분인데요.

아무리 봐도 틀린건 없어보입니다.

 

앞에서 월을 구분하는 조건문에도 똑같이 -eq를 썼거든요.

 

근데 아무리 바꿔보고 해봐도.. 계속 뜨는 오류..

결국 검색을 해보니...

 

 

-eq : 문자열이 아닌 정수 비교에 사용.

 

 

하아.....

좀 더 꼼꼼하게 찾아봤으면 되었을것을...

 

 

 

그래서 문자열 부분을 바꿔줬습니다.

date 로 빼 낸 값은 문자가 아닌 숫자로 인식이 됩니다.

그래서 -eq 가 아니라 == 로 하면 에러가 뜨네요.

 

저렇게 문자열 조건문을 바꿔주고..

다시 실행!!!

 

 

 

와우!

깔끔하게 해결 되었습니다 ㅎㅎㅎ

 

어떻게보면 참 쉬운건데.. 이런것도 잘 모르고 허둥댈 수 있으니 메모용으로.

쉘스크립트 if 오류 integer expression expected 내용이 떴으면

검색이 최곱니다 ㅎㅎㅎ

 

많은 고수님들이 길을 제시해주시니....

담번에는 이런 문제로 해메는 일이 없겠네요 ㅎㅎㅎ

 

728x90