![如何从 MYSQL 的heredoc命令中退出true?](https://linux22.com/image/165354/%E5%A6%82%E4%BD%95%E4%BB%8E%20MYSQL%20%E7%9A%84heredoc%E5%91%BD%E4%BB%A4%E4%B8%AD%E9%80%80%E5%87%BAtrue%EF%BC%9F.png)
我有一个使用 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
请注意,aif condition ; then stuff; else stuff ; fi
将返回 true,但如果 a具有非零退出, fi
则set -e
可能导致脚本调用其错误处理(通常退出) 。stuff