2010-12-30 19 views
0

変数がmysql入力のためにファイルに書き込むbashメニューがあります。 はHERESに私が持っているもの:私は「$のmysqlu」のようなインスタンスのために必要とBASHエコー書き込みmysql入力

echo "CREATE DATABASE '$mysqldbn'; 

#GRANT ALL PRIVILEGES ON *.* TO '$mysqlu'@'$myhost' IDENTIFIED BY '$mysqlup' WITH GRANT OPTION; 

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON '$mysqldbn'.* TO '$mysqlu'@'$myhost' IDENTIFIED BY '$mysqlup'; 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON '$mysqldbn'.* TO '$mysqlu'@'$myip' IDENTIFIED BY '$mysqlup'; 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON '$mysqldbn'.* TO '$mysqlu'@'localhost' IDENTIFIED BY '$mysqlup'; 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES< LOCK TABLES on '$mysqldbn'.* TO '$mysqlu'@'$rip' IDENTIFIED BY '$mysqlup';" > nmysql.db 


mysql -u root -p$mypass < nmysql.db 

問題は、私は単一引用符でそれらを入れていた表示するには、変数を取得することで、単一引用符は、@「localhost」の表示します。しかし、どうやって引用符を削除し、CREATE DATABASE '$ mysqldbn'のようなインスタンスで変数を使用することができますか?二重引用符はどちらも動作しません、私は迷っています。事前に

おかげで、 ジョー

答えて

1

私は本当にここにあなたの問題が表示されていないが、あなたはbashで変数名を引用する${mysqldbn}を使用することができ、その役立つだろうか?

+0

ありがとうthats必要なもの! 問題は、CREATE DATABASE 'example'以外のmysqlはありませんでした。 – jmituzas

0

一重引用符は不要にする必要があります。

ただし、こちらのドキュメントを使用することをおすすめします。約:

mysql -u root -p$mypass <<EOF 

CREATE DATABASE $mysqldbn; 

#GRANT ALL PRIVILEGES ON *.* TO '$mysqlu'@'$myhost' IDENTIFIED BY '$mysqlup' WITH GRANT OPTION; 

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON '$mysqldbn'.* TO '$mysqlu'@'$myhost' IDENTIFIED BY '$mysqlup'; 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON '$mysqldbn'.* TO '$mysqlu'@'$myip' IDENTIFIED BY '$mysqlup'; 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON '$mysqldbn'.* TO '$mysqlu'@'localhost' IDENTIFIED BY '$mysqlup'; 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES< LOCK TABLES on '$mysqldbn'.* TO '$mysqlu'@'$rip' IDENTIFIED BY '$mysqlup'; 
EOF 
0

私の知る限りでは、あなたが値を表示するには、二重引用符を使用する必要があり、ここに私の例です:

#!/bin/bash 
myvar="MyValue" 
echo "$myvar" 
echo '$myvar' 
echo '${myvar}' 

は生成:

MyValue 
$myvar 
${myvar} 

が、これは

を役に立てば幸い
関連する問題