我正在尝试从linux shell执行一个insert语句,其中一列有' $ 2a $ 10 $ zKjqmgld1gDYB / qkDuAS'在价值中。当我看到插入的数据时,该值被截断,我只得到了aKjqmgld1gDYB / qkDuAS'因为任何数字后跟美元被linux视为传递给脚本的参数。
这就是我执行脚本的方式
mysql -u user --password=password -e "insert into users(id,name,password) values(1,'Some Name','\$2a\$10\$zKjqmgld1gDYB/qkDuAS')"
我甚至试图逃避$,如$ $ \ $ 10 \ $ zKjqmgld1gDYB / qkDuAS,但它仍会产生相同的截断数据,但是当我回显时,#$ 2a \ $ 10 \ $ zKjqmgld1gDYB / qkDuAS& #39;,我把整个事情都归还了。
萨米尔
答案 0 :(得分:0)
单引号不嵌套在shell中(无论如何,它们是否在其他地方?)。所以,你的字符串实际上在引号之外。结合双引号和反斜杠:
mysql -u user --password=password -e \
"insert into users(id,name,password) values(1,'Some Name','\$2a$10\$zKjqmgld1gDYB/qkDuAS')"
答案 1 :(得分:0)
它已经是双引号(抱歉,写错了查询)。这也没有用,但是我找到了一个解决方法
echo "insert into users(id,name,password) values(1,'Some Name','\$2a\$10\$zKjqmgld1gDYB/qkDuAS')" >> temp.sql
mysql -u user --password=password < temp.sql
这终于奏效了。