0

私の最初の(簡略化された)スクリプト mysql_script.sh は次のとおりです。

#!/bin/bash
/usr/bin/mysql --password=**** --database=mydb<<EOMYSQL
SELECT SUM(usd) FROM mytable WHERE country=$VAR
INTO OUTFILE "oufile_$VAR.txt" FIELDS TERMINATED BY ';';
EOMYSQL

最初のスクリプトは 2 番目のスクリプトから呼び出されます。

#!/bin/bash
list=( 30 50 60 )
for L in "${list[@]}"
do
  VAR=${L} ./mysql_script.sh
done

$VAR=*正常に動作しますが、 、またはの結果を含む 4 番目のクエリを取得する必要があります$VAR=30 or 50 or 60。VAR は DB 内のすべての国のコードであるため、「すべての国」の SUM(usd) の値が必要です。それをどう表現したらいいの?

私はテスト'%%'しましたが、'*'成功しませんでした。

ありがとう、


(私は願っています)より良い理解のために編集

4

1 に答える 1

1

これを試して:

#!/bin/bash
list=( 30 50 60 country)
for L in "${list[@]}"
do
  VAR=${L} ./mysql_script.sh
done

これにより、where country=countrywhich は常に true になり、すべての行の合計が返されます。

OR の処理はよりトリッキーになり、その時点で、bash から perl や python のようなスクリプト言語に移行するのが適切であると言えます。

于 2013-01-11T04:11:28.483 に答える