データベースを初期化するためのbashスクリプトを作成しようとしています。今はすべてうまくいっています。データベースの作成、ユーザーの作成、データベースに対するユーザーのアクセス許可の付与ができました。Bash whileループがmysqlのインポートを待機する
ここで、インポートスクリプトを実行します。私はmysqlコマンドを実行するだけでそれを行うことができますが、ユーザーは潜在的に1〜2分、フィードバックなしでそこに座っています。
だから、コマンド実行中にスピナーを使うことにしました。
i=0
spin='-\|/'
echo "Beginning Data Import. This may take a while..."
while ((mysql -u$newUser -p$newPassword -D$dbName < import.sql) &>/dev/null &); do
i=$(((i+1) %4))
printf "\rImporting milestone SQL (All data)... ${spin:$i:1}"
sleep .3
done
私は、このコマンドの他のバリエーションを使用しましたが、それらはすべてa)は、スピナーは永遠にいっている
のいずれかになるように見えます。それは停止しない、または
b)は、それはMySQLのインポートコマンドを複数回私はグーグルで試してみたが、私の質問に答える何かを見つけるように見えることはできません
を実行しません。ほとんどは、私はwhile ((mysql -u$newUser -p$newPassword -D$dbName < l1jdb_m9.sql) &>/dev/null &) != 1
ような何かを行うことができます示すように見えるが、それは構文エラー、または通常は無限ループで、その結果、どちらか動作するようには思えません。あなたがこれを行う場合は
ご覧ください:http://www.shellcheck.net/ – Cyrus
ありがとうございましたが、唯一のことは「シェルは曖昧さを排除します((最初は(サブシェルを開始し、スペースの後にスペースを入れてください。最初の括弧の後ろにスペースを入れても無限ループです。 –