在bash脚本中inputMySQL密码

我有一个bash脚本需要在MySQL中执行一些操作。 到目前为止,我有这样的东西:

#!/bin/sh read -p "Enter your MySQL username: " $sqluname read -sp "Enter your MySQL password (ENTER for none): " $sqlpasswd /usr/bin/mysql -u $sqluname -p $sqlpasswd << eof *some SQL stuff* eof 

这个效果很好,直到它与一个空白密码的MySQL用户名一起使用。 用户在我的密码提示符下按ENTER,但是他们又收到另一个提示,要求从MySQL再次input密码。

我怎样才能避免这第二个密码提示,并使脚本处理空白和非空白密码?

检查密码是否为空,如果是,则省略-p开关。

 read -p "Enter your MySQL username: " $sqluname read -sp "Enter your MySQL password (ENTER for none): " $sqlpasswd if [ -n "$sqlpasswd" ]; then /usr/bin/mysql -u $sqluname -p $sqlpasswd << eof else /usr/bin/mysql -u $sqluname << eof fi 

稍后编辑以避免整个if-then-else块:

 command="/usr/bin/mysql -u $sqluname" [ -n "$sqlpasswd" ] && command="$command -p$sqlpasswd" eval $command 

如果$ sqlpasswd为空(而不是-p $sqlpasswd ),则需要指定-n开关。