BASHスクリプトを介してコマンド出力を検証することはそれほど効率的ではありません。

BASHスクリプトを介してコマンド出力を検証することはそれほど効率的ではありません。

リモートデータベースが存在することを確認しようとすると、条件文と混合された動作が表示されます。

技術的には、このステートメントは機能しますが(データベースが見つかると正しく報告されます)、失敗すると(データベースが見つかりません)、何らかの理由で追跡できないエラーが発生します。

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_XXvarに一重引用符が必要かどうかはわかりません。

おすすめ記事