无法选择一些mysql数据并将其存储到bash

时间:2016-06-20 14:56:34

标签: mysql bash

使这项工作的所有其他变量都经过测试并正常工作,所以我显然做错了。

我有一个bash脚本,它首先选择一些mysql数据并存储到一个新变量中。

然后它再次连接并更新数据库。

title=$(mysql -u $user -p$pass -h $host dbname | SELECT post_title FROM wp_posts WHERE ID=$8);

mysql --host=$host --user=$user --password=$pass dbname <<EOF
UPDATE wp_my_music_lib SET title = "$title" WHERE track_id=${4}${6};
EOF

title条目始终为空,这告诉我初始SELECT无法正常工作。还应注意,从选择结果中预期的数据具有空格和特殊字符,即:

Some Artist (10/10/13)

我认为引用var "$title"会解决任何潜在的吞噬问题,但这不是问题,因为我尝试从不同的列中选择单个数字对象,但这也不起作用。

如果我硬编码标题var它按预期工作。

1)你能看出我做错了吗?

2)是否可以使用一个数据库连接执行上述所有操作,因为这样会更有意义?

1 个答案:

答案 0 :(得分:1)

equalsmysql | SELECT的输出传递给名为mysql的命令,这显然不是您想要的。

要通过SELECT执行查询并捕获输出,您可以使用以下语法:

mysql

您还可以在子查询中执行title=$(mysql -B dbname <<< "SELECT post_title FROM wp_posts WHERE ID=$8") 以避免多次调用SELECT

mysql