You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash循环结合MySQL:如何在查询中使用循环变量

问题解决思路

问题根源是Bash单引号的特性:单引号包裹的内容会被当作纯字符串,变量$i不会被解析替换,导致MySQL收到的查询语句里直接是$i,自然识别无效。

给你两种可行的修改方案:

方案一:改用双引号包裹MySQL查询语句

把查询语句的单引号换成双引号,这样Bash会自动解析里面的$i变量。同时注意给日期值加上单引号,符合MySQL字符串语法:

#!/bin/bash
for i in '2022/08/30' '2022/08/31'
do
    mysql --host=myhost --user=myusr --password=mypass -e "select * from db.table where dt = '$i'"
done

方案二:拼接单引号与变量

如果坚持用单引号包裹查询主体,可以通过字符串拼接的方式,把变量$i用单引号包裹后插入到查询语句中:

#!/bin/bash
for i in '2022/08/30' '2022/08/31'
do
    mysql --host=myhost --user=myusr --password=mypass -e 'select * from db.table where dt = '"'$i'"''
done

这里的拼接逻辑是:'select ... = ' + '$i' + '',最终组合成符合MySQL要求的查询语句。

额外提示

如果后续变量来源是不可信输入(比如用户输入),直接拼接SQL会有注入风险,这种场景建议使用MySQL的参数化查询方式,但你当前用固定日期列表,完全不用担心这个问题。

内容的提问来源于stack exchange,提问作者kikee1222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:42:24