3つのタスクを実行するmakeスクリプトがあります。
これらのタスクでは、スクリプトに3つの入力が必要です。
何らかの理由で、入力をread
するたびに正しい変数に保存されますが、内容は最初の文字なしで保存した変数名です。なぜそうなのか、私にはわかりません。
これがMakefile
です。
Shell := /bin/bash
default:
@echo "Welcome!";\
echo -n "Please enter the MySQL Host (default: localhost):";\
read Host;\
Host=${Host:-localhost};\
echo -n "Please enter the MySQL username:";\
read username;\
echo -n "Please enter the MySQL password:";\
read -s password;\
mv includes/config.php.example includes/config.php 2>/dev/null;true;\
sed 's/"USER", ""/"USER", "$(username)"/g' includes/config.php > includes/config.php;\
sed 's/"PASSWORD", ""/"PASSWORD", "$(password)"/g' includes/config.php > includes/conf$
echo $username;\
echo $password;\
mysql -u "$username" -p"$password" codeday-team < ./codeday-team.sql;\
echo "Configuration complete. For further configuration options, check the config file$
exit 0;
出力は次のとおりです。
Welcome!
Please enter the MySQL Host (default: localhost):
Please enter the MySQL username:<snip>
Please enter the MySQL password:sername
assword
ERROR 1045 (28000): Access denied for user 'sername'@'localhost' (using password: YES)
Configuration complete. For further configuration options, check the config file includes/config.php
ご覧のとおり、sername
とassword
が出力されます。私の人生ではこれは直せません!
この投稿の目的はread
バグを解決することですが、アドバイス、バグレポート、または提案をいただければ幸いです。私は彼らに賞金を授与するかもしれません。
助けてくれてありがとう!
makefileの機能を使用していない場合、それらの行を単一のシェルで記述してみませんか?
次に使用するMakefileで
echo $username;\
echo $password;\
makeは$username
を$u
(空の変数)+ sername
(文字列)として解析します
makefileにとどまりたい場合は、$username
を$$username
に置き換えてみてください。