2012-04-12 9 views
2

私は、選択されたMySqlテーブルのデータをエクササイズとして出力するシェルスクリプトを作成しています。私のキーワードを使って検索すると、MySqlテーブル全体をどのように印刷するのかが決まります。これは、異なる言語と無関係の質問で行います。MYSQL&Shell Scripting:テーブル結果の個々の行属性を参照しますか?

私の質問:

1)可能な場合、どのように私はPHPの結果と行をするとき反復のような結果()から特定の行の個々の属性を参照していますか?

2)どちらの場合でも、この目的に最も適しているのはどちらの方法ですか?私は現時点では好きではない。


MYSQL="mysql -u$db_user -p$db_passwd $db_name -Nbe" 

A)

RESULT=`$MYSQL "select * from $table_name where can_auto_check='yes';"` 
for UNIQUEID in $RESULT 
do 
    echo "selected: $client $desc " 
    someFunction $client $anothervariable 
done 

B)

$MYSQL "select * from $table_name where can_auto_check='yes';" \ 
| while read client anothervariable; 
do 
    echo "selected: $client $desc " 
    someFunction $client $anothervariable 
done 

私が間違って文言私の検索だことも可能です。そうであれば、誰かが私を正しい方向に振り向かせることができれば幸いです。

ありがとうございます。

EDIT:可能なリード。awk '{print $ 1 "" $ 2}'と関係があります。すべての行についてです。

最終フォーマット= "ます。mkdir -p /ネット/ $ SERVERの/ $ CLIENT/$のDESC/someFiles"

+0

あなたのコメントをオプションCと同じように元の質問に移動してください。ここで読むのが難しいです。また、クエリから1-2行のサンプル出力を表示し、最終出力の書式設定の必要性を示した場合にも役立ちます。 幸運。 – shellter

答えて

1

悪くないが、あまりのコードはエラーの少ないチャンスを意味します。残念ながら、私はmySQLを利用できないので、編集をテストすることはできません。うまくいけば、アイデアを得るでしょう。 (または他の人がこの投稿をテストして編集することができます)。

# unless you need to use ALL_CLIENTS and DESC_FOR_CLIENT later. 
#hidden ALL_CLIENTS= 

for CLIENT in $($MYSQL "select distinct client from $table_name where can_auto_check='yes'") 
do 
    #hidden DESC_FOR_CLIENT= 
    for DESC in $($MYSQL "select desc from $table_name where client='$CLIENT'") 
    do 
     someFunction $CLIENT $DESC 
    done 
done 

それらにスペースを持つクライアントまたはDESC_FOR_CLIENTワインドアップのために自分の価値観のいずれかの場合は、"$CLIENT"のような使用状況値を引用する必要があります。

もう1つ注意してください:コマンド置換のバックティックは、少なくとも1995年以来廃止されています(オリジナルのunix bourneシェルまたはcsh、多分灰、その他の曖昧なシェルはほとんどありません)。 Bashとkshは必要ありません。あなたのcmd置換に$(.. cmd ...)を使用してください。

幸運。

+0

私はそれを行うことができることを指摘していただきありがとうございます。このシナリオでは、クエリが複数回必要ですが、これはおそらく他の関数に役立ちます。再度、感謝します! (ワンアップですが、私は現時点ではできません..) – Sixthfore

関連する問題