Makefile與shell指令碼區別

2022-06-23 08:09:14 字數 1112 閱讀 3801

在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 ...