在makefile可以呼叫shell指令碼,但是makefile和shell指令碼是不同的。本文試著歸納一下makefile和shell指令碼的不同。
1、 shell中所有引用以$打頭的變數其後要加{},而在makefile中的變數是以$打頭的後加()。例項如下:
makefile
path="/data/"
subpath=$(path)
shell
path="/data/"
subpath=$
2、makefile中所有以$打頭的單詞都會被解釋成makefile中的變數。如果你需要呼叫shell中的變數(或者正規表示式中錨定句位$),都需要加兩個$符號($$)。例項如下:
path="/data/"
all:
echo $
echo $$path例子中的第乙個$引用的是makefile中的變數,而不是shell中的path環境變數,後者引用的事shell中的path環境變數。
3、萬用字元區別
shell 中萬用字元*表示所有的字元
makefile 中萬用字元%表示所有的字元
4、在makefile中只能在target中呼叫shell指令碼,其他地方是不能輸出的。比如如下**就是沒有任何輸出:
var="hello"
echo "$var"
all:
.....以上**任何時候都不會輸出,沒有在target內,如果上述**改為如下:
var="hello"
all:
echo "$var"
.....以上**,在make all的時候將會執行echo命令。
5、在makefile中執行shell命令,一行建立乙個程序來執行。這也是為什麼很多makefile中有很多行的末尾都是「; \」,以此來保證**是一行而不是多行,這樣makefile可以在乙個程序中執行,例如:
subdir=src example
all:
@for subdir in $(subdir); \
do\echo "building "; \
done上述可以看出for迴圈中每行都是以」; \」結尾的。
6、獲取當前目錄
path=`pwd` 注意是``,不是''
Linux Makefile與shell指令碼區別
在makefile可以呼叫shell指令碼,但是makefile和shell指令碼是不同的。本文試著歸納一下makefile和shell指令碼的不同。1 shell中所有引用以 打頭的變數其後要加 而在makefile中的變數是以 打頭的後加 例項如下 makefile path data subp...
C函式呼叫shell腳
c程式呼叫shell指令碼共有三種方式 system popen exec系列函式 1 system shell命令或shell指令碼路徑 執行過程 system 會呼叫fork 產生子程序,由子程序來呼叫 bin sh c string來執行引數string 字串所代表的命令,此命令執行完後隨即返...
expdp impdp 速度估算shell指令碼
需求 在資料遷移專案中,經常需要計算大批量匯出 匯入的速度,以估算遷移專案的時間視窗是否滿足要求。例如有如下impdp log檔案,需要估算本次 impdp 過程的速度 1.more impdp.log 2.import release 11.2.0.3.0 productionontue mar ...