mysql 테이블 복사 및 삭제 쉘 스크립트 관련 질문
안녕하세요 제가 쉘 스크립트를 개발하면서 질문이 있어서 글을 남깁니다.
제가 매해 31일 11시 59분쯤에 해당 DB 테이블의 user_년도 테이블로 복사를 하고 기존의 user 데이터는 지워서
다음 년도의 데이터만 추가하는 스크립트를 작성 중입니다.
일단 DB 테이블을 복사 하고 그 다음에 if 조건문에서
echo "select * from USER where ID not in (select ID from USER_$TIME);" | mysql --login-path=swim study --column-names=0 의 쿼리문을 줘서 두 테이블이 동일한지 확인한 후 삭제를 하려고 합니다.
if 문에 -z 옵션을 줘서 null 값일 때 delete 쿼리문을 실행하려고 합니다.
아래의 스크립트 실행시 if문에서 unexpecte EOF while looking for matching '' 구문이 나와서 큰따옴표나 작은따옴표의 문제 같은데 바꿔봐도 같은 에러 메시지가 나와서 질문드립니다.
그리고 마지막줄에는 unexpectd end of file 메시지도 나와서 어떤 부분 때문에 에러가 발생하는지 알려주시면
감사하겠습니다.
#!/bin/bash
TIME=`date +%Y`
query=`echo "select count(*) from USER;" | mysql --login-path=swim study --column-names=0
echo "CREATE TABLE USER_$TIME like USER;" | mysql --login-path=swim study
echo "INSERT INTO USER_$TIME SELECT * FROM USER;" | mysql --login-path=swim study
if [ -z `echo "select * from USER where ID not in (select ID from USER_$TIME);" | mysql --login-path=swim study --column-names=0` ] ; then
echo "DELETE FROM USER ;" | mysql --login-path=swim study
fi
음 ..
unexpected eof 나 그와 유사한 에러가 뜨는 경우에는..
높은 확률로 파일이 DOS 파일이거나 non-printable 문자가 섞여 있는 경우가 많습니다.
file 명령으로 봤을 때, with CRLF line terminators 가 붙어 있거나..
ascii text 가 아닌 다른 내용이 붙어 있다면..
dos2unix 명령으로 unix 파일로 바꾸거나, 편집기에서 특수 문자를 찾아서 제거하세요.
일단 위처럼 살펴 봤는데, 파일에는 아무런 문제가 없다고 판단되면..
bash -x ./script.sh 과 같이 -x 옵션을 주고 실행해서 직접 디버깅 해보세요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
댓글 달기