Как выйти из команды heredoc из MYSQL?

Некоторые системы, отличные от -Unix, обрабатывают двоичные и текстовые файлы по-разному. Например, в DOS, Windows и OS/2 (, которые не имели значения при разработке fopen, но служат полезными примерами ), открытие файла в текстовом режиме и запись в него будут преобразовывать окончания строк. от соглашения «C»(\n)до того, что требует платформа. В других системах открытие файла в двоичном режиме приведет к его обработке в записях. Это то, что флаг «b» в fopenконтролирует :файлы, открытые без него, открываются в текстовом режиме, файлы, открытые с ним, открываются в двоичном режиме. Поскольку системы стиля Unix -не имеют такого различия, «b» игнорируется (и не вызывает ошибки ).

В моем экземпляре книги не упоминается «+», но я предполагаю, что fopenне поддерживал его тогда,(поддерживает сейчас).

0
10.12.2019, 05:03
1 ответ

Это должно быть так же просто, как

set -e
mysql -h localhost -D test -ppassword  <<-RENAME || true
      SET FOREIGN_KEY_CHECKS=0;
      RENAME TABLE $table TO $table\_keep;
      SET FOREIGN_KEY_CHECKS=1;
RENAME

или вы можете поместить его в оператор if

set -e
if mysql -h localhost -D test -ppassword  <<-RENAME
      SET FOREIGN_KEY_CHECKS=0;
      RENAME TABLE $table TO $table\_keep;
      SET FOREIGN_KEY_CHECKS=1;
RENAME
then
    echo mysql was happy
else
    rc=$?
    echo mysql returned $rc
    : do something with $rc
fi

Обратите внимание, что if condition ; then stuff; else stuff ; fiвернет истину в fi, хотя set -eможет привести к тому, что сценарий вызовет обработку ошибок (, обычно выход ), если stuffне имеет -выход нулевой.

2
28.01.2020, 02:29

Теги

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