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
Квадратные скобки ([ ... ]
или [[ .. ]]
) используются для специальных тестов (см. мужской тест
). Если вы просто хотите увидеть, успешно ли завершена команда (т. е. указан ли код выхода 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