使用tr或sed为MySQL输入准备字符串
我一直在寻找我的问题的解决方案,因为我有一个bash脚本递归地将数据输入MySQL数据库 有时,我想要输入的字符串包含单引号,这就是我的编码卡住的地方 在将字符串发送到SQL处理之前,我希望在字符串上运行sed或tr筛选器,并使用它将单引号更改为后跟相同引号的转义字符,例如从使用tr或sed为MySQL输入准备字符串,mysql,bash,sed,tr,Mysql,Bash,Sed,Tr,我一直在寻找我的问题的解决方案,因为我有一个bash脚本递归地将数据输入MySQL数据库 有时,我想要输入的字符串包含单引号,这就是我的编码卡住的地方 在将字符串发送到SQL处理之前,我希望在字符串上运行sed或tr筛选器,并使用它将单引号更改为后跟相同引号的转义字符,例如从'到\' 我尝试了以下其他建议,但结果没有改变: string="Karl's Oil Lamp" find="'" replace="\\\'" echo $string | sed -r 's/$find/$replac
'
到\'
我尝试了以下其他建议,但结果没有改变:
string="Karl's Oil Lamp"
find="'"
replace="\\\'"
echo $string | sed -r 's/$find/$replace/g'
我可以看到我的字符串保持不变,输出为Karl's Oil Lamp
。我在使用tr时也有类似的运气,尽管这可能不是我所需要的解决方案
有什么建议吗?运行Ubuntu 16.04.2 LTS。使用以下sed表达式:
sed "s/'/\\\'/" <<< $string
通过参数扩展,无需外部工具:
$ string="Karl's Oil Lamp"
$ echo "${string//\'/\\\'}"
Karl\'s Oil Lamp
这是“${parameter//pattern/string}”
表单的扩展,将所有出现的模式
替换为字符串
<代码>模式是一个单引号,我们必须转义\'
,字符串
是反斜杠和引号,我们必须转义\\'
尝试失败的原因是单引号阻止了参数扩展,请参阅
$ string="Karl's Oil Lamp"
$ echo "${string//\'/\\\'}"
Karl\'s Oil Lamp