【问题标题】: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】:
我猜你应该在尝试执行命令时删除 < 和 ${i// /\\ } 周围的单引号。执行时,您必须将它们视为适当的标记,而不仅仅是字符串。