我需要更改启动MySQL守护程序时创建的临时root密码。问题是临时密码有一些需要转义的奇怪字符(例如左/右括号)。现在,有一些关于如何转义字符的帖子(here,here,here),但是这篇文章是在使用bash脚本更改临时文件的上下文中MySQL root密码,可能包含特殊字符。
目前,我的脚本如下所示。
function startMysql {
sudo service mysqld start
echo "started mysql"
export PW=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $11}')
# export PASS=\'$PW\'
echo "temporary password is $PW"
mysqladmin -u root -p$PW password aaBB@@cc1122
# the following doesn't work either
# mysqladmin -u root -p$PASS password aaBB@@cc1122
echo "changed mysql password"
}
请注意,临时密码可能如下所示。
如果我在终端上键入以下内容,则可以正常工作。
mysqladmin -u root -p'BYkc*),ZM3-_' password aaBB@@cc1122
但是在脚本中,它失败了。以下是我试图在$PW
周围放置单引号但未成功的一些方法。
mysqladmin -u root -p"'$PW'" password aaBB@@cc1122
mysqladmin -u root -p\''$PW'\' password aaBB@@cc1122
mysqladmin -u root -p"$PW" password aaBB@@cc1122
mysqladmin -u root -p"\"$PW\"" password aaBB@@cc1122
关于我做错的任何想法?
答案 0 :(得分:1)
使用双引号对我有用:
def f(L):
def f_helper(L,i):
if i:
return f_helper([L,L], i-1) + f_helper([L,L], i-1)
return len(L)
return f_helper(L,3)