Я пишу Makefile, и некоторые из команд, которые запускают makefile, требуют пароля. Я хотел бы предоставить пользователю возможность передать это как переменную Makefile с помощью make PASSWORD=password
или если пользователь не передает ее, а затем запросит у пользователя ее и сохранит ответ в указанной переменной Makefile.
В настоящий момент я могу проверить переменную Makefile, а затем, как часть моих целевых правил, написать команды оболочки, которые запрашивают пароль пользователя и сохраняют его в переменной оболочки. Однако эта переменная доступна только для этой конкретной оболочки, а не для других.
Как я могу что-то прочитать у пользователя и сохранить его в переменной?
Я пробовал следующее:
PASSWORD ?= $(shell read -s -p "Password: " pwd; echo $pwd)
но подсказка никогда не печатается. Я также пробовал echo "Password: "
внутри оболочки, но это тоже не печатается.
Любые идеи?
Edit:
Чтобы уточнить, пароль должен быть установлен для конкретной цели, поэтому у меня есть что-то вроде этого:
PASSWORD :=
my-target: PASSWORD ?= $(shell read -s -p "Password: " pwd; echo $$pwd)
my-target:
# rules for mytarget that use $(PASSWORD)
Изменить 2:
Я нашел проблему. Когда я устанавливаю PASSWORD :=
в верхней части script, он устанавливает PASSWORD
в пустую строку, а это, в свою очередь, заставляет ?=
пропускаться (поскольку PASSWORD
) уже установлен.