我正在尝试从 linux shell 执行一条插入语句,其中一列的值包含“$2a$10$zKjqmgld1gDYB/qkDuAS”。当我看到插入的数据时,该值被截断,我只得到“aKjqmgld1gDYB/qkDuAS”,因为 Linux 将美元后面的任何数字视为传递给脚本的参数。
这就是我执行脚本的方式
mysql -u user --password=password -e "插入用户(id,name,password)值(1,'Some Name','\$2a\$10\$zKjqmgld1gDYB/qkDuAS')"
我什至尝试过像\$2a\$10\$zKjqmgld1gDYB/qkDuAS 一样转义 $,但它仍然会产生相同的截断数据,但是当我 echo '\$2a\$10\$zKjqmgld1gDYB/qkDuAS' 时,我把全部东西拿回来。
萨米尔
最佳答案
单引号不能嵌套在 shell 中(它们也可以嵌套在其他地方吗?)。因此,您的字符串实际上位于引号之外。结合双引号和反斜杠:
mysql -u user --password=password -e \
"insert into users(id,name,password) values(1,'Some Name','\$2a$10\$zKjqmgld1gDYB/qkDuAS')"
关于mysql - 从 Linux Shell 运行的 sql 脚本中转义 $,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24059004/