Как включить «>» в ​​это условие if | Bash Script

 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
08.06.2017, 23:44
1 ответ

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

Теги

Похожие вопросы