0

これが私の問題です。シェル スクリプトと対応する .sql 拡張子のバッチ ファイルを使用してトリガーする一連の SQL データベース クエリがあります。私のクエリの中には、(要求に応じて) 手動でユーザー入力を行う必要があるものがありますが、これをスクリプトに実装することはできませんでした。

今のところ、シェルスクリプトを介してユーザー入力を日付として取り込みます。

echo "Please specify the date in yyyy-mm-dd format: 'input;"
read input
mysql -u user -ppass < batch_file.sql

$input変数をバッチファイルに渡したいです。

SQL クエリが実行されるバッチ ファイルは、次のようになります。

select count(*) as count from subscriptions 
where date_add(optin_date, interval 1 year) between "$input" 
and date(curdate()) 
and active = 1 
and stype = "domain";

"$input"シェルスクリプトから渡された変数はどこにありますか。

どんなアイデアでも大歓迎です、ありがとう。

4

1 に答える 1

1

スクリプトでヒアドキュメントを使用してこれを試してください:

#!/bin/sh

echo "Please specify the date in yyyy-mm-dd format: 'input;"
read input
mysql -u user -ppass <<EOF
select count(*) as count from subscriptions 
where date_add(optin_date, interval 1 year) between "$input" 
and date(curdatE()) 
and active = 1 
and stype = "domain";
EOF

何らかの理由で最初の解決策を使用できない場合の別の解決策:

echo "Please specify the date in yyyy-mm-dd format: 'input;"
read input
sed -i "s/\"\$input\"/$input/g" batch_file.sql
mysql -u user -ppass < batch_file.sql

2番目の解決策を好む場合は、%%PATTERN%%代わりにSQLファイルの代わりに何かを使用することをお勧めします。$input

于 2013-02-07T14:41:36.860 に答える