
오류 발생 시 종료하기 위해 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