使这项工作的所有其他变量都经过测试并正常工作,所以我显然做错了。
我有一个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)是否可以使用一个数据库连接执行上述所有操作,因为这样会更有意义?
答案 0 :(得分:1)
equals
将mysql | SELECT
的输出传递给名为mysql
的命令,这显然不是您想要的。
要通过SELECT
执行查询并捕获输出,您可以使用以下语法:
mysql
您还可以在子查询中执行title=$(mysql -B dbname <<< "SELECT post_title FROM wp_posts WHERE ID=$8")
以避免多次调用SELECT
:
mysql