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脚本将特殊字符转义导致运行失败了,例子如下:(定义一个变量并且输出)

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

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

相关推荐
不想写bug呀3 分钟前
MySQL事务介绍
数据库·mysql
m0_7369191011 分钟前
实战:用Python分析某电商销售数据
jvm·数据库·python
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.16 分钟前
双主模式实现HTTP与MySQL高可用
网络协议·mysql·http
cheems952727 分钟前
【MySQL】SQL调优:数据库性能优化(一)
数据库·sql·mysql
Rysxt_28 分钟前
分布式数据库模式结构完整教程
数据库·分布式
远方160938 分钟前
113-Oracle database26ai rpm安装和适配生产
大数据·数据库·sql·oracle·database
MMMMMMMMMMemory39 分钟前
社区版oceanbase报警XA事务悬挂
数据库·oceanbase
OceanBase数据库官方博客42 分钟前
APQO自适应参数化查询优化框架——OceanBase 校企联合研究成果
数据库·oceanbase·分布式数据库
Aloudata43 分钟前
破解监管溯源难题:从表级血缘到算子级血缘的数据治理升级
数据库·数据挖掘·数据治理·元数据·数据血缘
OceanBase数据库官方博客1 小时前
中国联通软研院基于OceanBase引领运营商数智化转型新范式
数据库·oceanbase·分布式数据库