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