4

MySQLでいくつかのアクションを実行する必要があるbashスクリプトがあります。これまでのところ、私はこのようなものを持っています:

#!/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から「パスワードを入力してください」という別のプロンプトが表示されます。

この2番目のパスワードプロンプトを回避し、スクリプトで空白のパスワードと空白以外のパスワードの両方を処理するにはどうすればよいですか?

4

2 に答える 2

2

パスワードが空白かどうかを確認し、空白の場合は、-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
于 2012-05-09T03:43:23.130 に答える
2

-n$ sqlpasswdが(ではなく)空の場合は、スイッチを指定する必要があります-p $sqlpasswd

于 2012-05-09T02:21:21.157 に答える