shell脚本定义特殊字符导致执行mysql文件错误的问题

记得有一次版本发布过程中有提供一个sh脚本用于一键执行sql文件,遇到一个shell脚本定义特殊字符的问题,sh脚本的内容类似以下内容:

powershell 复制代码
# 数据库ip地址
ip="127.0.0.1"
# 数据库密码
cmdb='cmdb!@#$!'
sm='sm!@#$!'

# 执行脚本文件(参照样本)
mysql --ucmdb --p$cmdb -Dcmdb<./xxx_xxx1.sql
mysql --ucmdb --p$cmdb -Dcmdb<./xxx_xxx2.sql
mysql --usm --p$sm -Dsm<./xxx_xxx2.sql
mysql --usm --p$sm -Dsm<./xxx_xxx2.sql

由于现场一线人员设置的密码比较复杂,因此包含许多特殊字符 ,最后在执行sh脚本的时候频繁报数据库密码错误 的错误。

经过排查验证,通过mysql客户端验证密码是正确的,但是通过我们提供的sh脚本执行时却一直报错,最后排查到是shell脚本将特殊字符转义导致运行失败了,例子如下:(定义一个变量并且输出)

通过执行上述脚本,会发现字符串中后面的$!字符丢失了。

最后将双引号改为单引号 ,避免字符串转义即可,如下:

相关推荐
杨云龙UP2 分钟前
Oracle 19c 单机到单机 Active Data Guard 搭建与巡检操作手册
数据库·oracle·adg·操作指南·data guard·dg搭建
念越7 分钟前
初中语数英答题与竞赛平台
java·数据库·spring boot
落日归屿27 分钟前
AI 商品图做完后,为什么还要管图层?
数据库
拾贰_C35 分钟前
【English | conversation 】call | 抖音AI短句情景:打电话---come over
数据库·redis·缓存
2601_962885721 小时前
AlphaFeed 支持哪些 K 线周期?period参数怎么传?
前端·数据库·python
麦壳饼1 小时前
架构深度解析:SonnetDB 的写入与查询路径
数据库·sonnetdb
福兮说2 小时前
IP 地址转整数的七个坑:192.168.1.1 算出负数、127.1 也是合法地址、存进 INT 直接溢出
javascript·网络·网络协议·tcp/ip·mysql·golang
gudufy2 小时前
ASP.NET Core 多租户如何动态创建数据库?数据库初始化怎么做?
数据库·blazor·admin
Data-Miner3 小时前
离线AI制表:模型适配与脚本固化实操
大数据·数据库·人工智能·excel
xixiaoyunya3 小时前
数据库三种备份方式怎么组合?从原理到落地的完整方案
数据库