リモートデータベースが存在することを確認しようとすると、条件文と混合された動作が表示されます。
技術的には、このステートメントは機能しますが(データベースが見つかると正しく報告されます)、失敗すると(データベースが見つかりません)、何らかの理由で追跡できないエラーが発生します。
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に一重引用符が必要かどうかはわかりません。