首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash + MySQL -d反标记问题

Bash + MySQL -d反标记问题
EN

Stack Overflow用户
提问于 2013-04-15 03:30:52
回答 2查看 2.9K关注 0票数 3

我正在帮助一个社区项目创建一个解决方案,该项目本着社区精神,免费监测河流水位。这项工作的最终产品将是一个从河流水位探测器获取数据并为在线社区生成图表的系统。

我在这个项目的早期,因为我对Bash很熟悉,所以我使用它从探测器中提取一个包含数据的文本文件,并将其推送到MySQL数据库中。一切都很顺利,直到我遇到了一个绊脚石。我的数据库表中的许多列都是数字,因此要使用MySQL命令行工具与这些列进行交互,必须使用反号。不幸的是,我想将MySQL语句的输出放入一个变量中,但我认为由于两组倒计时,MySQL没有得到正确的命令。

我用一种肮脏的工作来推敲它,就像这样,工作效率很低:

代码语言:javascript
复制
mysql -N -D $targetDatabase -e "select \`"$timeSample"\` from RiverDataDays where date="$dateOfFile";" >tmpValue

dbEntry=`cat tmpValue`

echo $dbEntry

但实际上,我想要做的是将它直接推入一个变量中,如下所示:

代码语言:javascript
复制
dbEntry=`mysql -N -D $targetDatabase -e "select \`"$timeSample"\` from RiverDataDays where date="$dateOfFile";"`

echo $dbEntry
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-15 03:36:08

试着这样做:

代码语言:javascript
复制
dbEntry="$(printf "SELECT \140%s\140 FROM 'RiverDataDays' WHERE date = '%s';\n" "$timeSample" "$(<tmpValue )" | mysql -N -D "$targetDatabase")"
echo "$dbEntry"

代码语言:javascript
复制
dbEntry="$(printf "SELECT \`%s\` FROM 'RiverDataDays' WHERE date = '%s';\n" "$timeSample" "$(<tmpValue )" | mysql -N -D "$targetDatabase")"
echo "$dbEntry"

反引号(`)用在旧式的命令替换中,例如

代码语言:javascript
复制
foo=`command`

这个

代码语言:javascript
复制
foo=$(command)

建议使用语法。$()中的反斜杠处理并不令人惊讶,而且$()更容易嵌套。请参阅http://mywiki.wooledge.org/BashFAQ/082

代码语言:javascript
复制
\140

是反记号的八进制表示形式,请参见

代码语言:javascript
复制
man ascii
票数 5
EN

Stack Overflow用户

发布于 2013-04-15 14:07:15

点击人造卫星的链接:- http://mywiki.wooledge.org/BashFAQ/082

然后相应地修改代码

dbEntry=$(mysql -N -D $targetDatabase -e "select `"$timeSample"` from RiverDataDays where date="$dateOfFile";")

echo $dbEntry

精彩论坛-非常感谢:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16003367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档