エラー発生時に終了するためにset -eを使用するスクリプトがありますが、||強制的にtrueを返す方法がわかりません。
#!/bin/bash
mysql -h localhost -D test -ppassword <<-RENAME
SET FOREIGN_KEY_CHECKS=0;
RENAME TABLE $table TO $table\_keep;
SET FOREIGN_KEY_CHECKS=1;
RENAME
|| trueを試してみましたが、何の役にも立ちませんでした。これにより、mysqlがインタラクティブモードになります。
#!/bin/bash
set -e
mysql -h localhost -D test -ppassword || true <<-RENAME
SET FOREIGN_KEY_CHECKS=0;
RENAME TABLE $table TO $table\_keep;
SET FOREIGN_KEY_CHECKS=1;
RENAME
ありがとうございます!
ベストアンサー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
aはif condition ; then stuff; else stuff ; fi
trueを返しますが、aの終了値が0以外の場合、 fi
スクリプトset -e
はエラー処理(通常は終了)を呼び出す可能性があります。stuff