我阅读了无数关于此的主题,但没有一个解决此问题。
我需要在命令行上执行一个 MySQL 表达式,该表达式包含$
被转义的表达式,因此会破坏 MySQL 的行为
mysql -u root -p -e "some statement that change a pa$$word"
Run Code Online (Sandbox Code Playgroud)
有人告诉我检查它 printf
printf "%q\n" 'pa$$word'
pa\$\$word
Run Code Online (Sandbox Code Playgroud)
所以我不需要逃避,$
否则错误的密码会被输入到 MySQL 查询中。
小智 9
你误解了一些机制。
当您将短语放在单引号中时,即'
,没有扩展并且您不必转义$
s。扩展意味着有特殊字符,如$
,如果未转义,则会触发特殊的 shell 程序。所以当你用单引号抑制扩展时,你不需要转义它们。因此使用:
mysql -u root -p -e 'some statement that change a pa$$word'
Run Code Online (Sandbox Code Playgroud)
至于printf
,你所做的不是检查。调用它%q
会在$
s 中添加反斜杠。
如果某些东西不起作用,那是因为$$
被更改为 shell 的 PID(进程 ID)。这就是 shell 在其正常上下文中对这种特殊字符组合的构成,即。当它们没有被转义或放在单引号内时。
归档时间: |
|
查看次数: |
1735 次 |
最近记录: |