MYSQL의 heredoc 명령에서 true를 종료하는 방법은 무엇입니까?

MYSQL의 heredoc 명령에서 true를 종료하는 방법은 무엇입니까?

오류 발생 시 종료하기 위해 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 ; fitrue를 반환하지만 a의 종료 값이 0이 아닌 경우 fi이로 set -e인해 스크립트가 오류 처리(일반적으로 종료됨)를 호출하게 될 수 있습니다.stuff

관련 정보