次のコマンドを実行するスクリプトを書いています
mysql -u root -e "show databases"
これにより、データベースのリストが表示されます。
このテーブルに「userdb」という名前のデータベースが含まれていない場合は、次のことを行う必要があります。
if [ ... ]; then
echo "error"
exit
fi
条件には何を書くif [ ... ]
?
grep
テーブル名が表示されているかどうかを確認できます。grep -q
はコンソールに何も出力しませんが、結果に従って終了ステータスを設定します (終了ステータスは によってチェックされますif
)。
if ! mysql -u root -e 'show databases' | grep -q '^userdb$' ; then
echo error
exit
fi
正規表現について: ' ^
' は行頭と一致し、' ' は行末と一致します(たとえば$
を含むデータベース名の誤検出を避けるため) 。userdb
userdb2
これを試してください:
usedb=DBname
check=`mysql -u root -e "show databases" | grep $userdb`
if [ "$check" != "$userdb" ]; then
echo "error"
exit
fi
ただし、データベース名の行に他の情報が含まれている場合は、エラーが発生します。でそれを回避してみてくださいregexp