このif条件に ">"をどのように含めることができますか?バッシュスクリプト

このif条件に ">"をどのように含めることができますか?バッシュスクリプト
 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

関連情報