mysql命令行sql执行神秘,只考虑部分字符串

mysql command line sql execution mystery, only part of the string is considered

来自我的 Mac 终端的命令行:

mysql --host=127.0.0.1 --port=3306 -uroot -p"mypass" wordpress -e "update users set user_pass = '$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0';"

成功完成...

然而....只有 .L2vsQdD3MxvxAuDFKp0 被写入每一行的 user_pass 字段。威士忌探戈狐步舞?

不用说,当我从像 DataGrip 这样的应用程序直接向数据库发出 update users set user_pass = '$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0'; 时,它会正确地获取整个字符串....

$ 是 shell 变量的一部分,无意中被替换了。您必须转义 $ 字符才能将其作为文字 $.

保留在字符串中
$ echo "$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0"
.L2vsQdD3MxvxAuDFKp0
$ echo "$1$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0"
$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0