0

スターターおよびテスト コマンドの自動データベース バックアップの実行。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

どうやら、引用符により、コマンドではなく文字列として実行されます。

4

2 に答える 2

0

コマンドが見つからない理由

あなたの引用符は正しくありません。次のようなことを試してください:

while read line ; do mysqldump -uroot "$line" > "$line".sql ; done

mysqldump使用していないので、特定のコマンドの構文についてはわかりません。

于 2013-03-28T10:19:06.270 に答える
0

これを解決する bash スクリプトは次のとおりです: https://github.com/jeevandongre/backup-restore

于 2013-03-28T10:16:43.257 に答える