连接到mysql db并执行查询并将结果导出到变量--bash脚本

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (116)

我想连接到mysql数据库并执行一些查询并将其结果导出到一个varibale,并且所有这些都需要完全由bash脚本完成

我有一个代码片段但不起作用。

#!/bin/bash

BASEDIR=$(dirname $0)
cd $BASEDIR

mysqlUser=n_userdb
mysqlPass=d2FVR0NA3
mysqlDb=n_datadb

result=$(mysql -u $mysqlUser -p$mysqlPass -D $mysqlDb -e "select * from confs limit 1")

echo "${result}" >> a.txt

有什么问题 ?

提问于
用户回答回答于

做这个:

result=$(mysql -u $mysqlUser -p$mysqlPass -D $mysqlDb -e "select * from confs limit 1" | grep '^\|' | tail -1)

Bash的$()语句很难处理包含多行的变量,所以上面的hack只会涉及有趣的部分:数据

用户回答回答于

通过使用正确的密码在聊天中解决该问题。

如果进一步想只有数据,使用mysql-NB(或--skip-column-names--batch)。

此外,脚本需要引用变量扩展,否则将出现包含shell特有字符的用户名/密码问题。此外,大写变量名通常保留给系统变量。

#!/bin/sh

basedir=$(dirname "$0")

mysqlUser='n_userdb'
mysqlPass='d2FVR0NA3'
mysqlDb='n_datadb'

cd "$basedir" &&
mysql -NB -u "$mysqlUser" -p"$mysqlPass" -D "$mysqlDb" \
      -e 'select * from confs limit 1' >a.txt 2>a-err.txt

但理想情况下,您可以使用my.cnf文件来配置用户名和密码。

见例如

扫码关注云+社区

领取腾讯云代金券