当在bash脚本执行回声是这样的:错误执行命令
(echo mysql --host=${host} --user=${user} --password=${password} ${database} '<' '${i// /\\ }')
我得到了“正确的”线路返回终端......但是当我中的回声,我得到的MySQL错误。问题是我无法准确地看到发送给mysql的内容,但它看起来与我在执行回显时看到的有所不同......任何想法?
谢谢。
当在bash脚本执行回声是这样的:错误执行命令
(echo mysql --host=${host} --user=${user} --password=${password} ${database} '<' '${i// /\\ }')
我得到了“正确的”线路返回终端......但是当我中的回声,我得到的MySQL错误。问题是我无法准确地看到发送给mysql的内容,但它看起来与我在执行回显时看到的有所不同......任何想法?
谢谢。
如果这是一个bash脚本,然后第一线更改为
#!/bin/bash -x
这将执行在调试模式下运行脚本,让你看到所有的变量的扩张。
输入重定向'<'不应该在引号中,也不应该是输入源。即使没有引号,我也不认为输入源会扩展到你想要的。
尝试在使用mysql命令之前创建输入源字符串。
declare input=${i// /\\ }
使用eval
eval mysql --host=${host} --user=${user} --password=${password} ${database} < ${input}
EVAL将尝试执行命令之前展开所有变量。
我想你应该在尝试执行命令时删除围绕<
和${i// /\\ }
的单引号。执行时,你必须将它们视为适当的令牌,而不仅仅是字符串。