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