DbConnection.java
コマンドを使用してJavaファイルの行を変更する必要がありますsed
。行は次のとおりです
connection = DriverManager.getConnection("jdbc:mysql://**localhost**/**bajaj**","**root**", "**root**");
次のことを試しましたが、うまくいきました(ユーザーが指定した値を変更できます)。
sed -i "s|://localhost/bajaj|://${HOSTNAME}/${DBNAME}|" DbConnection.java
ただし、次の作業を開始するにはDBUSERNAME
&を置き換えることはできませんDBPASSWORD
。
sed -i "s|"jdbc:mysql://localhost/bajaj","root", "root"|"jdbc:mysql://${HOSTNAME}/${DBNAME}","${DBUSERNAME}", "${DBPASSWORD}"|" DbConnection.java
答え1
二重引用符を使用して文字列と文字列自体を区切るため、引用符付き文字列は早く停止し、内部引用符文字は含まれません。
sed -i "s|"jdbc:mysql:...
Ends here-^
文字列のすべての引用符をエスケープできます。
sed -i "s|\"jdbc:mysql://localhost/bajaj\",\"root\", \"root\"|\"jdbc:mysql://${HOSTNAME}/${DBNAME}\",\"${DBUSERNAME}\", \"${DBPASSWORD}\"|" DbConnection.java
これで、コマンドの各二重引用符sed
の前にバックスラッシュが追加され、シェルがそれを解釈できなくなります。
または、パラメータの周囲に単一引用符を使用することもできますsed
。
sed -i 's|"jdbc:mysql://localhost/bajaj","root", "root"|"jdbc:mysql://'"${HOSTNAME}"'/'"${DBNAME}"'","'"${DBUSERNAME}"'", "'"${DBPASSWORD}"'"|' DbConnection.java
変数が置換され続けるように、各変数の周りに一重引用符を付けます'AB'"$VAR"'CD'
。複数の単語への拡張を防ぐために、シェル内の変数を二重引用符で囲みます。