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

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

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

相关推荐
Hello.Reader2 小时前
RedisJSON 路径语法深度解析与实战
数据库·redis·缓存
TDengine (老段)3 小时前
TDengine 使用最佳实践(2)
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
设计师小聂!5 小时前
Linux系统中部署Redis详解
linux·运维·数据库·redis
kfepiza5 小时前
Debian-10编译安装Mysql-5.7.44 笔记250706
linux·数据库·笔记·mysql·debian·bash
Touper.5 小时前
Redis 基础详细介绍(Redis简单介绍,命令行客户端,Redis 命令,Java客户端)
java·数据库·redis
不剪发的Tony老师5 小时前
phpMyAdmin:一款经典的MySQL在线管理工具又回来了
数据库·mysql·phpmyadmin
极限实验室5 小时前
TDBC 2025 可信数据库发展大会,极限科技邀您来赴约!
数据库
lixia0417mul27 小时前
使用Starrocks替换Clickhouse的理由
数据库
张璐月8 小时前
mysql的性能优化:组提交、数据页复用、全表扫描优化、刷脏页
数据库·mysql·性能优化
沐尘而生9 小时前
【AI智能体】智能音视频-搭建可视化智能体
数据库·人工智能·ai作画·音视频·娱乐