makefile和script - Linux

Adele avatar
By Adele
at 2013-12-26T10:04

Table of Contents

您好:
拋磚引玉一下,請各位前輩指教。

http://en.wikipedia.org/wiki/Make_%28software%29#Rules


上面有提到,每次<tab>後面的command 都是啟動單獨的shell去執行
也就是說,有幾個commands就會跑幾次shell去執行這些commands

這樣表示,上面一行的command的狀態,變數等資訊都無法傳遞給下面的
commands。換句話說,目前的command和上面的狀態無關,因此會有

all: # 假設工作目錄在/workspace
<tab>cd test1 # 切換到/workspace/test1目錄
<tab>./test # 目錄還在/workspace

./test出現錯誤的狀況

有興趣可以自己寫個實驗測一下就知道,如<tab>cd test1後下一行再
來個<tab>pwd

如果想要有狀態延續,我想到的有
1. 如您post提到,在Makefile直接執行shell script
2. 在一行command執行多個指令,您可以man bash再搜尋Compound Commands
或是Lists
3. 如果是要多個makefile共用設定,可以用include指令或是source一個變數
設定的script

※ 引述《gn00618777 (非常念舊)》之銘言:
[Deleted]
: makefile會一點,script語法會一點,但我整個就是搞不清楚啥時候用makefile
: 啥時用script,看了同事他們的makefile,裡面會呼叫.sh也就是script來跑
: 我也不懂為何不能直接把這些一大串指令直接複製到makefile裡讓他跑。
[deleted]

--
Tags: Linux

All Comments

Regina avatar
By Regina
at 2013-12-29T05:00
另外一個方式就是用export,
這樣後面的process就可以認得那些變數了XD
Anthony avatar
By Anthony
at 2014-01-01T03:49
原來如此啊~學到了 謝謝
Freda avatar
By Freda
at 2014-01-03T05:37
要在 Makefile 寫多行時,在行末加上 ; \ 即可
Victoria avatar
By Victoria
at 2014-01-05T13:40
也就是把它們塞成一行
Margaret avatar
By Margaret
at 2014-01-06T10:30
如:cd foo; do something...; ...; ... ← 寫成一行
Kristin avatar
By Kristin
at 2014-01-11T01:52
依據你的例子~ 最好的寫法是 cd test && ./test 即可

makefile和script

Freda avatar
By Freda
at 2013-12-26T09:50
因為makefile 有自己的格式 他並不是「一堆指令」 要將一大串指令步驟自動化 就把他們全部寫到.sh檔裡,直接執行那個.sh檔 (這是給bash看的) 而寫在makefile裡面的指令,是給and#34;makeand#34;這個程式看的 他有自己的格式。空格、tab、if-else都要注意 ※ ...

makefile和script

Lucy avatar
By Lucy
at 2013-12-25T23:24
目前的任務要Build code,參照網路上的一大串指令步驟 我第一個念頭就是把這些指令步驟直接複製到makefile裡,想用make直接讓他跑指令, 後來當然是無法make,強者同事說用makefile寫,目前是這樣的,我的進度是 makefile會一點,script語法會一點,但我整個就是搞不清楚啥 ...

JAVA變更系統時間無效

Daniel avatar
By Daniel
at 2013-12-25T22:46
網路上看到更新系統時間的方法是 加入下面兩行 Runtime.getRuntime().exec(and#34;sudo date -s 2013-05-22and#34;); Runtime.getRuntime().exec(and#34;sudo date -s 12:25:00and#34;); 但就 ...

VNC如何設定不share server

Kristin avatar
By Kristin
at 2013-12-25T00:41
我系統是solaris 10 安裝的應該是real VNC 我遇到的問題是...我希望的的電腦只有單一個使用者連線... 使用者都是用windows連進來的... 目前推測有兩種方式應該可以達成 第一種 =andgt; 修改real VNC server設定....目前我還不會 第二種 =and ...

HackingThursday 固定聚會 (2013-12-26)

Jacob avatar
By Jacob
at 2013-12-23T12:12
通告網址: [http://www.hackingthursday.org/][1] * * * * 時間: 每週四晚上 19:30 至 22:00 ( 熱食供應至 20:00 ) * 地點: 伯朗咖啡 ( 建國店 ) * 地址: 台北市大安區建國南路一段 166 號 2 樓 * 鄰 ...