Điều này tương tự như another issue, nhưng tôi chỉ muốn make
để nhắc giá trị nếu tôi đang chạy một mục tiêu cụ thể cụ thể và biến bắt buộc chưa được chỉ định.Làm thế nào để nhắc cho biến Makefile mục tiêu cụ thể nếu không xác định?
Mã hiện tại:
install-crontab: PASSWORD ?= "$(shell read -p "Password: "; echo "$$REPLY")"
install-crontab: $(SCRIPT_PATH)
@echo "@midnight \"$(SCRIPT_PATH)\" [...] \"$(PASSWORD)\""
này chỉ dẫn đến đầu ra sau và không có dấu nhắc:
Password: read: 1: arg count
@midnight [...] ""
Điểm quan trọng ở đây là tôi phải hỏi chỉ khi chạy này mục tiêu và chỉ nếu biến chưa được xác định. Tôi không thể sử dụng tập lệnh configure
, vì rõ ràng tôi không nên lưu trữ mật khẩu trong tập lệnh cấu hình và vì mục tiêu này không phải là một phần của quy trình cài đặt chuẩn.
Trừ khi mắt tôi đánh lừa tôi, trong khi vòng lặp sẽ lặp lại thay vì sử dụng mặc định 'N' nếu bạn chỉ cần nhấn Enter. – l0b0
Bạn nên sử dụng một [dấu bằng đơn trong '['] (http://mywiki.wooledge.org/Bashism#Conditionals) – l0b0
Bạn cũng có thể đơn giản hóa câu lệnh 'if':' if [$$ CONTINUE! = "Y "] && [$$ CONTINUE! =" Y "]; sau đó'. Hoặc thậm chí '[$$ CONTINUE =" y "] || [$$ CONTINUE = "Y"] || (echo "Thoát".; thoát 1;) ' – l0b0