0

这是我的问题。我有一组 SQL 数据库查询,我使用 shell 脚本和扩展名为 .sql 的相应批处理文件触发这些查询。我的一些查询需要一些手动用户输入(根据请求),我没有在我的脚本中实现这些输入。

到目前为止,我通过 shell 脚本将用户输入作为日期输入:

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"从 shell 脚本传递下来的变量在哪里。

任何想法将不胜感激,谢谢。

4

1 回答 1

1

尝试在脚本中使用here-doc执行此操作:

#!/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

如果您更喜欢第二种解决方案,最好使用类似的东西%%PATTERN%%而不是在 SQL 文件中进行替换。$input

于 2013-02-07T14:41:36.860 回答