0

レコードセットを取得して、そこからいくつかのフィールドを読み取ろうとしています。フィールドを変数に入れる方法がわかりません。スクリプトは次のとおりです。

#!/bin/bash
sqlQuery="$(mysql -h host -u user -ppass -D oberonsaas_v2 -s -N -e 
'select ventas.id_venta,
ventas_entradas.id_ventas_entradas,
ventas.id_evento,
id_tarifa,
DATE_FORMAT(fecha_evento,"%Y%m%d") as fecha,
TIME_FORMAT(pase,"%H%i") as pase

from pases,ventas,ventas_entradas,recintos

where ventas.id_recinto = recintos.id_recinto 
and ventas.id_pase = pases.id_pase
and ventas.id_venta = ventas_entradas.id_venta
and recintos.id_cliente = 32
and ventas.estado="Pagada"
and date(fecha_venta) = date_add(date(CURRENT_TIMESTAMP),INTERVAL -1 day)')"
echo $sqlQuery

$ sqlQueryですべてのレコードセットを取得しますが、ループを実行してフィールドを連結したいと思います。

4

2 に答える 2

1

さて、私はいくつかの出力を発明しました

#!/bin/bash

Result="21,336,purchase,tarif_exspensive,Jose"
(IFS=","
for i in $Result
do
    echo "I Have: " $i
done
)

出力は

$ bash t5.sh 
I Have:  21
I Have:  336
I Have:  purchase
I Have:  tarif_exspensive
I Have:  Jose
于 2013-02-05T16:16:21.200 に答える
0

これを可能な限り単純な構成に折りたたみます。返されたレコードセットを bash 配列に入れます (例):

sqlQuery=( pases_value ventas_value ventas_entradas_value recintos_value )

注:あなたのものは次のようになります:

sqlQuery=( $(mysql -h host ... )

配列演算子「(」と「)」の間の改行は問題ありません

それぞれが個別の sqlQuery 配列の場所にあります。たとえば、戻り値: recintos_value

echo ${sqlQuery[3]}

すべて連結:

echo ${sqlQuery[*]}

区切り文字が問題になる場合は、mysql --delimiter スイッチを使用して目的の文字を定義してから、

set concatValue=${sqlQuery[*]}

次に、区切り文字 ("," など) を削除します。

set finalValue=${concatValue//,}
于 2013-02-05T16:21:51.810 に答える