0

次のコマンドを実行するスクリプトを書いています

mysql -u root -e "show databases"

これにより、データベースのリストが表示されます。

このテーブルに「userdb」という名前のデータベースが含まれていない場合は、次のことを行う必要があります。

if [ ... ]; then
 echo "error"
 exit
fi

条件には何を書くif [ ... ]

4

2 に答える 2

2

grepテーブル名が表示されているかどうかを確認できます。grep -qはコンソールに何も出力しませんが、結果に従って終了ステータスを設定します (終了ステータスは によってチェックされますif)。

if ! mysql -u root -e 'show databases' | grep -q '^userdb$' ; then
    echo error
    exit
fi

正規表現について: ' ^' は行頭と一致し、' ' は行末と一致します(たとえば$を含むデータベース名の誤検出を避けるため) 。userdbuserdb2

于 2012-12-06T06:48:44.860 に答える
0

これを試してください:

usedb=DBname    
check=`mysql -u root -e "show databases" | grep $userdb`
if [ "$check" != "$userdb" ]; then
 echo "error"
exit
fi

ただし、データベース名の行に他の情報が含まれている場合は、エラーが発生します。でそれを回避してみてくださいregexp

于 2012-12-06T05:59:26.093 に答える