![MYSQL의 heredoc 명령에서 true를 종료하는 방법은 무엇입니까?](https://linux55.com/image/165354/MYSQL%EC%9D%98%20heredoc%20%EB%AA%85%EB%A0%B9%EC%97%90%EC%84%9C%20true%EB%A5%BC%20%EC%A2%85%EB%A3%8C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.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
a는 if condition ; then stuff; else stuff ; fi
true를 반환하지만 a의 종료 값이 0이 아닌 경우 fi
이로 set -e
인해 스크립트가 오류 처리(일반적으로 종료됨)를 호출하게 될 수 있습니다.stuff