![BASH 스크립트를 통해 명령 출력의 유효성을 검사하는 것은 그리 효율적이지 않습니다.](https://linux55.com/image/85004/BASH%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EB%AA%85%EB%A0%B9%20%EC%B6%9C%EB%A0%A5%EC%9D%98%20%EC%9C%A0%ED%9A%A8%EC%84%B1%EC%9D%84%20%EA%B2%80%EC%82%AC%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9D%80%20%EA%B7%B8%EB%A6%AC%20%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9D%B4%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
원격 데이터베이스가 존재하는지 확인하려고 할 때 조건문과 혼합된 동작이 나타납니다.
기술적으로 이 명령문은 작동하지만(데이터베이스가 발견되면 올바르게 보고됨) 실패하면(데이터베이스를 찾을 수 없음) 어떤 이유로 추적할 수 없는 오류가 발생합니다.
REMOTE_EXISTS=$(mysql --login-path=$REMOTE_HOST --batch --skip-column-names -e "SHOW DATABASES LIKE '"$REMOTE_DB"';" | grep "$REMOTE_DB")
if [[ $? != 0 ]]; then
die "Checking for $REMOTE_DB failed. Please report this error."
elif [[ $REMOTE_EXISTS ]]; then
vrb "The database '$REMOTE_DB' has been found to exist on '$REMOTE_HOST'. Proceeding."
else
die "Oops! We couldn't find '$REMOTE_DB' on the '$REMOTE_HOST' server. Are you sure it's there?"
fi
내가 어디서 잘못되었는지 잘 모르겠습니다. 로그인 세부 정보는 저장된 구성을 통해 전달되므로 mysql_config_editor
내 조건이나 설정 방법에 근본적으로 문제가 있다고 생각됩니다.
안타깝게도 오류가 모호하고 내 스크립트의 함정에 걸려서 보고서가 약간 모호합니다. 또한 다음도 시도했습니다.
[ "$REMOTE_EXISTS" -eq 0 ]
[[ "$REMOTE_EXISTS" ]]
더 나은 행운은 없습니다.
도와주셔서 감사합니다. 감사합니다!
답변1
나는 노력할 것이다
mysql --login-path=$REMOTE_HOST --batch --skip-column-names -e "SHOW DATABASES LIKE '"$REMOTE_DB"';" > /tmp/remote_db
if [[ $? != 0 ]]; then
die "Checking for $REMOTE_DB failed. Please report this error."
elif grep -q "$REMOTE_DB" /tmp/remote_db ; then
vrb "The database '$REMOTE_DB' has been found to exist on '$REMOTE_HOST'. Proceeding."
else
die "Oops! We couldn't find '$REMOTE_DB' on the '$REMOTE_HOST' server. Are you sure it's there?"
fi
REMOTE_XX
var에 작은따옴표가 필요한지 잘 모르겠습니다 .