私は単純なbashスクリプトを持っています。私は、データベースの各テーブルの行数の正確なカウントを取得したいと思います。Bashのmysqlのループスルー結果
#!/bin/bash
TABLES_OLD=$(mysql -u user -ppassword MySchema --batch --skip-column-names -e"SHOW TABLES FROM MySchema")
for table in "${TABLES_OLD[@]}"
do
QUERY="SELECT COUNT(*) FROM ${table}"
echo "${QUERY}"
done
スクリプトプリント:
SELECT COUNT(*) FROM Table 1
Table2
Table3
Table4
etc...
明らかにこれは私が欲しいものではありません、と私も何が起こっていることは可能であるかを理解していません。私は間違って何をしていますか?
は、MySQL -uユーザー-ppasswordはMySchema 'の出力を追加 - batch --skip-column-names -e "MySchemaからテーブルを表示する" "。 – Cyrus
'TABLES_OLD'は配列ではありません。それは文字列です。 'tables_old =($(mysql ....))'は、単語の配列を分割します(globメタキャラクターなども同様です)。ストリームから行単位のデータをループする正しい方法は、[Bash FAQ 001](http://mywiki.wooledge.org/BashFAQ/001)で説明されています。 –