1.有感叹号无法赋值。
(1)
[root@claim_db_master xj]# MySQL="mysql -uroot -p'Caa!@#$12345'"
-bash: !@#$12345'": event not found
(2)感叹号转义后字符串中出现反斜杆。
[root@claim_db_master xj]# MySQL="mysql -uroot -p'Caa\!@#$12345'"
[root@claim_db_master xj]# echo $MySQL
mysql -uroot -p'Caa\!@#2345'
2.优化处理方法
密码单独提出生成一个字符串。
[root@claim_db_master xj]# PASSWD='Caa!@#$12345'
[root@claim_db_master xj]# MySQL="mysql -uroot -p${PASSWD}"
[root@claim_db_master xj]# echo $MySQL
mysql -uroot -pCaa!@#$12345
${MySQL} -t -e 'select 1'
3.总结
当密码中出现特殊符号,例如感叹号导致无法通过shell编写自动化脚本,可以将密码单独提取到一个变量中。这样可以处理感叹号问题。