我试图在 bash 中获取 MySQL 查询的输出,并将其用于 bash 变量,但在脚本中使用时它一直显示为空白,但在终端上运行得很好。这里出了什么问题?
我尝试更改语句的编写方式并更改变量的名称,以防它以某种方式保留。我也进行了大量的搜索,但事实证明,如果您在搜索中使用“bash”、“空白”和“变量”,通常会出现一些我已经知道的如何测试空白变量的版本怎么办。
tempo=$(mysql -u "$dbuser" -p"$dbpass" -D "$database" -t -s -r -N -B -e "select user from example where user='$temp' > 0;")
printf "the output should be: $tempo" # This is a test statement
最终结果应该是 $tempo
变量应该包含数据库中的用户名,或者如果没有则为空。
最佳答案
我认为 user = '$temp' > 0
处的 sql 语句存在一些错误。
但是要从 MySql 获取结果,您必须将标准错误 (stderr
) 重定向到标准输出 (stdout
),您应该使用 2>&1。
您很可能会遇到 MySql 错误,但请尝试在终端上运行它。
tempo=$((mysql -u "$dbuser"-p"$dbpass"-D "$database"-t -s -r -N -B -e "从示例中选择用户,其中 user='$temp ' > 0;") 2>&1)
关于mysql - 为什么从 mysql 获取输出时这个 bash 变量为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56109835/