date=$(date +'%d-%m-%y')
mkdir -p $date
echo "Enter DB User";
read DBUSER ;
echo "Enter Password" ;
read PASS ;
echo "Enter DB Name" ;
read DBNAME ;
echo "Enter Dump file name with .sql"
read DESTDUMP
if [ mysqldump -u$DBUSER -p$PASS $DBNAME > $DESTDUMP ] ; then
mv $DESTDUMP.sql $date
rsync -RravhP $date $DESTINATION
else
echo "DATABASE DUMP WENT WRONG. CHECK YOUR ENTRIES"
fi
"if" 문에서는 오류가 발생하므로 스크립트는 "else" 부분으로 이동합니다. "if" 문의 출력을 제공합니다.
+ [ mysqldump -uuser1 -ppass1 db1 ]
script: 21: [: mysqldump: unexpected operator
+ echo DATABASE DUMP WENT WRONG. CHECK YOUR ENTRIES
DATABASE DUMP WENT WRONG. CHECK YOUR ENTRIES
답변1
특정 테스트에는 대괄호( [ ... ]
또는 [[ .. ]]
)가 사용됩니다( 참조 man test
). 명령이 성공적으로 완료되었는지 확인하려는 경우(즉, 종료 코드 제공 ) 0
를 사용하지 마십시오 . 간단히:
if command; then
do_something
else
do_something_else
fi
따라서 귀하의 경우에는 다음과 같습니다.
if mysqldump -u$DBUSER -p$PASS $DBNAME > $DESTDUMP; then
mv $DESTDUMP.sql $date
rsync -RravhP $date $DESTINATION
else
echo "DATABASE DUMP WENT WRONG. CHECK YOUR ENTRIES"
fi