shell指令碼和makefile的異同

2021-06-20 05:07:44 字數 1482 閱讀 1734

一直有這個疑惑,今天特地查了查,粘在這裡。這是別人,要是以後自己發現了別的不同,在繼續寫。還有,最後兩條還不是很明白,可能沒用過吧,

在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` 注意是``,不是''

Shell指令碼和shell

1.shell script,shell指令碼與windows dos下的批處理相似,也就是用各類命令預先放入到乙個檔案中,方便一次性執行的乙個程式檔案,主要是方便管理員進行設定或者管理用的。但是它比windows下的批處理更強大,比用其他程式設計程式編輯的程式效率更高,畢竟它使用了linux un...

shell概述和shell指令碼執行方式

shell概述 shell是乙個命令列直譯器,它為使用者提供了乙個向核心傳送請求以便執行程式的介面系統級程式,使用者可以用shell來啟動,掛起,停止甚至是編寫一些程式。shell還是乙個功能相當強大的程式語言,易編寫,易除錯,靈活性較強。shell是解釋執行的指令碼語言,在shell中可以直接呼叫...

Shell指令碼編寫和執行

bin bash echo hello world 為了使得使用者具有某個檔案的執行許可權,可以使用命令chmod命令.該命令的基本形式如下.chmod options filename其中,options表示各種許可權選項。使用者可以使用r w x這三個字母表示讀取 寫入和執行許可權,也可以使用數...