Shell-Script
makefile執行時如何從命令行獲取變數?
如在 bash 腳本中:讀取 -p “Only UI(y/n)” Temp_Answer。是否可以在 Makefile 執行時執行此操作?因為我想根據 Makefile 中的 $Temp_Answer(Y 或 N)做不同的基礎。
訪問 shell 變數
所有導出的 shell 環境變數都可以像這樣訪問:
$(MYBASEDIR)
例子
說我有這個
Makefile
。$ cat Makefile all: @echo $(FOO)
現在沒有變數集,大驚喜,我們什麼也得不到:
$ printenv | grep FOO $ $ make $
使用剛剛設置但未導出的變數:
$ FOO=bar $ printenv |grep FOO FOO=bar $ export -p | grep FOO $ $ make $
現在使用導出的變數:
$ export FOO $ export -p | grep FOO declare -x FOO="bar" $ make bar
讀取使用者輸入
當然,您可以在 Makefile 中讀取使用者的輸入。這是一個例子。
all: @echo "Text from env. var.: $(FOO)" @echo "" @while [ -z "$$CONTINUE" ]; do \ read -r -p "Type anything but Y or y to exit. [y/N]: " CONTINUE; \ done ; \ [ $$CONTINUE = "y" ] || [ $$CONTINUE = "Y" ] || (echo "Exiting."; exit 1;) @echo "..do more.."
有了這個,您現在可以繼續或停止
Makefile
:例子
按下
y
將繼續:$ make Text from env. var.: bar Type anything but Y or y to exit. [y/N]: y ..do more.. $
按下其他任何東西
n
都會停止它:$ make Text from env. var.: bar Type anything but Y or y to exit. [y/N]: n Exiting. make: *** [all] Error 1
參考