如何使用bash shell脚本更改临时根MySQL密码?

时间:2017-02-21 23:41:19

标签: mysql bash quotes single-quotes mysqladmin

我需要更改启动MySQL守护程序时创建的临时root密码。问题是临时密码有一些需要转义的奇怪字符(例如左/右括号)。现在,有一些关于如何转义字符的帖子(hereherehere),但是这篇文章是在使用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"
}

请注意,临时密码可能如下所示。

  • BYkc *),ZM3 -_

如果我在终端上键入以下内容,则可以正常工作。

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

关于我做错的任何想法?

1 个答案:

答案 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)