スターターおよびテスト コマンドの自動データベース バックアップの実行。BASH CLIを介してテキストファイルの各行でアクションを実行すると、次のような効果があることがわかりました。
# while read line; do
COMMAND $line
done
データベース名ファイルのリストを作成しました。
# mysql -uroot -e "show databases" > databases
次に、ファイルに対して次のことを試して、正しく機能するかどうかを確認しました。
# while read line; do
"mysqldump -uroot $line > /dbbackups/$line.sql"
done
一見、これは正しく機能しているように見えますが、次のエラーが発生します。
[04:58:46] [root@theia database-backup-testing]# cat databases | while read line ; do "mysqldump -uroot $line > $line.sql" ; done
-bash: mysqldump -uroot Database > Database.sql: command not found
-bash: mysqldump -uroot information_schema > information_schema.sql: command not found
-bash: mysqldump -uroot cphulkd > cphulkd.sql: command not found
明らかにコマンドの出力が正しいように見えるのに、コマンドが見つからない理由がわかりません。また、mysqldump の絶対パス (/usr/bin/mysqldump) を使用してみましたが、同じエラーが発生します。
なぜこれが起こっているのか、誰かが私に記入できますか?
編集:私は修正を見つけました:
引用符が削除されている場合、スクリプトは機能します。
# cat databases |
while read line; do
mysqldump -uroot $line > $line.sql
done
どうやら、引用符により、コマンドではなく文字列として実行されます。