sh 脚本有这个代码
export wp_and_db_user="${VESTACP_USER}_${HOST_PREFIX}"
export wp_and_db_pass=${VESTACP_PASS}
mysql -u${wp_and_db_user} -p${wp_and_db_pass} << EOF
use ${wp_and_db_user}
UPDATE `wp_users` SET
`ID` = '1',
`user_login` = '${wp_and_db_user}',
`user_pass` = md5('${wp_and_db_pass}'),
`user_nicename` = '${wp_and_db_user}',
`user_email` = 'timemail@test.com',
`user_url` = '',
`user_registered` = '2019-05-19 11:28:16',
`user_activation_key` = '',
`user_status` = '0',
`display_name` = '${wp_and_db_user}'
WHERE `ID` = '1';
EOF
这是错误
ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET = '1', = 'admin_resour', = md5('ODUyNzJmYmEyMmZhMzNmMj'), = 'admin_resour', ' at line 1
尽管我在 phpmyadmin 中测试过这些命令并且它们可以工作,但为什么我会收到错误消息
在这种情况下,您使用的是带有插值的 HEREDOC,它的行为类似于双引号中的字符串,特别是,它将反引号 (
``
) 中的字符串视为命令,其结果以最终字符串结尾:还有另一种 HEREDOC 语法,没有插值:
注意 EOF 周围的撇号。