【 TiDB 使用环境】自己电脑虚拟机环境
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
各位老师,在自己电脑上的虚拟机环境里面练习shell脚本发现1个问题,在1个log里面去1个带引号的字符串,虽然可以取出来但是发现在执行过程中,引号字符似乎被转义了,不知道是为什么,因为后续要拿这个字符串作为password去连接数据库,导致报错所以有这个疑问
效果如下
2.请教以下有什么办法可以取这个字符串的时候,直接把这对单引号给取了,只要引号里面的内容
以上2点,还请老师们指教以下,谢谢
dba-kit
(张天师)
2
直接用${tempstr}这个变量执行就好了,bash -x是为了给你展示,才做的转义。
dba-kit
(张天师)
3
你的问题,其实最主要是在输出test.log
不对,你如果不能保证密码里的内容,最好别用单引号括起来。用\xa0
、\u3000
这种不可见字符吧。
1 个赞
有什么办法,可以让取字符的时候把引号去了吗,比如’81gC2d34m^S-M+v7p’ 变成81gC2d34m^S-M+v7p
我后续使用这个密码去连接数据库的时候,密码就变成了’‘'‘81g’'‘C2d*34m^S-M+v7p’'’’ 这个了,等于直接把密码改变了
对于问题2,我找到了方法
假设tempstr= ’81gC2d34m^S-M+v7p’
tempstr=${tempstr#'}
tempstr=${tempstr%'}
echo $tempstr
最后可以将单引号去掉
这样就行
不知道老师们是不是还有其它方法
tempstr=grep -i 'str' test.log|awk -F "'" '{print $2"'\''"$3}'
这样
grep -i str test1.log | awk ‘{print $NF}’|awk -F ‘.’ ‘{print $1}’|sed “s/^‘//;s/’$//”
1 个赞
dba-kit
(张天师)
9
你这样是假定密码里不包含'
,但是看你实例的密码已经包含标点符号,如果一旦密码里有单引号,你这种假设就会出错。
dba-kit
(张天师)
10
否则生成密码后加一个 ... | tr -d "'"
把单引号删掉就可以了
redgame
(Ti D Ber Pa Amoi Ul)
11
str=$(echo “$str” | sed ‘s/’'‘//g’)