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

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

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

相关推荐
稻草猫.1 分钟前
MyBatis进阶:动态SQL与MyBatis Generator插件使用
java·数据库·后端·spring·mvc·mybatis
华农DrLai3 分钟前
什么是Prompt模板?为什么标准化的格式能提高稳定性?
数据库·人工智能·gpt·nlp·prompt
2301_8194143010 分钟前
Python入门:从零到一的第一个程序
jvm·数据库·python
熬夜的咕噜猫12 分钟前
Nginx 安全防护与 HTTPS 部署实战
网络·数据库
我真会写代码13 分钟前
从底层到实战:MySQL核心原理拆解,解锁数据库高性能密码
数据库·mysql
LF3_19 分钟前
监听数据库binlog日志变化,将变动实时发送到kafka
数据库·分布式·mysql·kafka·binlog·debezium
我真会写代码21 分钟前
从入门到精通:Redis实战指南,解锁高性能缓存核心能力
数据库·redis·缓存
杰杰79827 分钟前
一文掌握Django模型——认识模型
数据库·python·django
add45a28 分钟前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
江不清丶30 分钟前
事务隔离级别深度解析:从理论到MySQL实现
数据库·mysql