【问题标题】:Bash mysql not being executed [duplicate]Bash mysql没有被执行[重复]
【发布时间】:2021-11-16 17:53:23
【问题描述】:

我正在构建一个 Bash 脚本来执行 MySQL 查询。 Bash 脚本非常简单,但查询未正确执行。 MySQL 的响应就像一个 mysql 用法(命令帮助)。我做错了什么?

bash 文件是:

COMANDO='mysql -h 148.72.64.68 -p******** -u root db_vias_ue -e "select count(*) from clientes"'

$COMANDO

【问题讨论】:

  • 您说的是一个简单的脚本,但您却无缘无故地将其复杂化(这很明显)。只需从您的文件中运行 cmd。第一行:#!/bin/bash,第二行:mysql -h ....... ...脚本结束,完成! ;-)!祝你好运。
  • 当您搜索 [bash] mysql script 时,实际上有 1000 多个问答。查看stackoverflow.com/questions/25135661/… 以获得在bash 脚本中使用mysql 的更高级示例(但构造良好)。祝你好运。
  • 不要将命令存储在变量中;变量用于数据,而不是可执行代码。请参阅 BashFAQ #50: "I'm trying to put a command in a variable, but the complex cases always fail!"many previous questions (但要避免所有涉及 eval 的建议——那样会带来疯狂和更奇怪的错误)。
  • 只是为了证明奇怪之处:我切掉了所有会干扰问题的内容,试图尽可能地专注于这个问题。为什么会这样?说来话长……感谢您的 cmets 和建议!

标签: mysql linux bash


【解决方案1】:

Bash 引用规则非常奇怪。在您所写的内容中,双引号内的表达式实际上被分成多个参数。

试试这个:

COMANDO='mysql -h 148.72.64.68 -p******** -u root db_vias_ue -e "select count(*) from clientes"'

bash -c "$COMANDO"

【讨论】:

  • 这与eval 有大部分相同的问题,通常是个坏主意。根据实际目标,几乎可以肯定有更好的解决方案。
猜你喜欢
  • 2021-03-05
  • 2019-05-02
  • 1970-01-01
  • 2016-03-30
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 2014-04-22
  • 1970-01-01
相关资源
最近更新 更多