【问题标题】:Error executing command in bash在 bash 中执行命令时出错
【发布时间】:2011-08-18 18:45:06
【问题描述】:

当像这样在 bash 脚本上执行回显时:

(echo mysql --host=${host} --user=${user} --password=${password} ${database} '<'  '${i// /\\ }' )

我得到“正确”行回显到终端...但是当我删除回显时,我得到 MySQL 错误。问题是我无法确切看到发送到 mysql 的内容,但它似乎与我在执行 echo 时看到的不同......有什么想法吗?

谢谢。

【问题讨论】:

    标签: mysql regex linux perl bash


    【解决方案1】:

    如果这是在 bash 脚本中,则将第一行更改为

    #!/bin/bash -x
    

    这将在调试模式下执行脚本并允许您查看所有变量的扩展。

    输入重定向“

    在 mysql 命令中使用之前尝试创建输入源字符串。

    declare input=${i// /\\ }
    

    使用评估

    eval mysql --host=${host} --user=${user} --password=${password} ${database} < ${input}
    

    eval 将在尝试执行命令之前展开所有变量。

    【讨论】:

      【解决方案2】:

      我猜你应该在尝试执行命令时删除 &lt;${i// /\\ } 周围的单引号。执行时,您必须将它们视为适当的标记,而不仅仅是字符串。

      【讨论】:

        猜你喜欢
        • 2018-01-16
        • 2015-04-15
        • 2018-05-12
        • 2011-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多