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

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

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

相关推荐
2301_809244537 分钟前
C#怎么使用协变和逆变 C#泛型中的in和out关键字协变逆变是什么意思怎么用【语法】
jvm·数据库·python
知识汲取者15 分钟前
巨量引擎营销 API 完整文档
开发语言·数据库·python
j7~1 小时前
【MYSQL】在Centos7和ubuntu22.04环境下安装
数据库·c++·mysql·ubuntu·centos
环流_1 小时前
redis:持久化rdb
java·数据库·redis
Donk_672 小时前
MariaDB 数据库管理手册
数据库·mariadb
阿洛学长2 小时前
PostgreSQL 超详细安装与使用教程:从入门到实战
数据库·postgresql
许彰午2 小时前
Oracle Redo日志与Undo回滚段损坏恢复实战
数据库·oracle
qxwlcsdn2 小时前
mysql在事务中执行DDL的后果_MySQL 8.0之前的限制
jvm·数据库·python
難釋懷2 小时前
Redis通信协议-基于Socket自定义Redis的客户端
数据库·redis·缓存
环流_2 小时前
redis:AOF
数据库·redis·spring