mysql - 从 Linux Shell 运行的 sql 脚本中转义 $

标签 mysql sql linux shell escaping

我正在尝试从 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/

相关文章:

php - 将 .JSON 导入 MySQL

mysql - 重复的 SQL ID 对

linux - 重新链接匿名(未链接但打开)文件

html - .each 语句中的 Ruby on Rails 错误

mysql - 警告 : ? : (mysql. W002)

php - mysql左连接不返回所有左表行

linux - 对(第一个+后续)参数对进行操作

javascript - 在查询内分配值并且它没有更新

mysql - 如何从 MySQL 表中删除特定行?

linux - 如何在 sed 中使用单引号和双引号变量