【发布时间】:2018-05-25 16:34:57
【问题描述】:
我将以下代码作为脚本的一部分,其目的是复制本地网站(在我的 Ubuntu 16.04 xenial 服务器环境中)。复制站点的目录名、数据库用户名和数据库实例名称相同,并在${domain} 变量中表示,而${rps} 保存Mysql root 密码,${sps} 保存复制站点的数据库用户密码。
代码的第一部分工作正常(echo 和read)。第二部分失败(echo-|进入Mysql shell):
echo "1/3: Please enter the domain of the site for duplication." && read domain
echo "2/3: Please enter the password for your Mysql root user." && read -s rps
echo "3/3: Please enter the password of the site's DB user." && read -s sps
echo "DROP USER IF EXISTS 'test'@'localhost';" | mysql -u root -p"${rps}
echo "DROP database IF EXISTS test;" | mysql -u root -p"${rps}
echo "CREATE USER 'test'@'localhost' IDENTIFIED BY \"${sps}\";" | mysql -u root -p"${rps}
echo "CREATE database test;" | mysql -u root -p"${rps}
echo "GRANT ALL PRIVILEGES ON test.* TO test@localhost;" | mysql -u root -p"${rps}
我 echo 和 pipe Mysql 命令的原因:
这样做是为了确保${sps}变量的变量替换(变量替换不能发生在mysql shell内部,所以必须在外部完成并发送到mysql shell)。
问题
所有 echo-pipe 操作都失败,它们会启动辅助提示。
我的问题
为什么 echo-pipe 操作失败,也许这是一个正则表达式问题?
更多详情
完整代码可在here获取。
【问题讨论】:
-
-p"${rps}每行缺少一个结束双引号。我投票结束这个问题作为一个简单的印刷错误。
标签: php mysql regex bash shell