Questo è simile a another issue, ma voglio solo make
per richiedere un valore se sto utilizzando un target specifico e una variabile obbligatoria non è stata specificata.Come richiedere la variabile Makefile specifica della destinazione se non definita?
Il codice corrente:
install-crontab: PASSWORD ?= "$(shell read -p "Password: "; echo "$$REPLY")"
install-crontab: $(SCRIPT_PATH)
@echo "@midnight \"$(SCRIPT_PATH)\" [...] \"$(PASSWORD)\""
Ciò si traduce solo nel seguente output e nessuna richiesta:
Password: read: 1: arg count
@midnight [...] ""
Il punto importante qui è che devo chiedere solo quando si esegue questo target e solo se la variabile non è stata definita. Non riesco a utilizzare uno script configure
, perché ovviamente non dovrei memorizzare le password in uno script di configurazione e poiché questa destinazione non fa parte della procedura di installazione standard.
A meno che i miei occhi non mi ingannino, quel ciclo si ripeterà piuttosto che usare il 'N' predefinito se semplicemente premi Invio. – l0b0
Dovresti usare un [singolo segno uguale in '['] (http://mywiki.wooledge.org/Bashism#Conditionals) – l0b0
Puoi anche semplificare l'istruzione 'if':' if [$$ CONTINUE! = "Y "] && [$$ CONTINUE! =" Y "]; then'. O anche '[$$ CONTINUE =" y "] || [$$ CONTINUE = "Y"] || (echo "Exiting."; exit 1;) ' – l0b0