unix – 如何在shell指令碼中使用並行執行?
我有一個C shell指令碼,這樣做:
#!/bin/csh gcc example.c -o ex gcc combine.c -o combine ex file1 r1<-- 1 ex file2 r2<-- 2 ex file3 r3<-- 3 #... many more like the above combine r1 r2 r3 final \rm r1 r2 r3
有沒有辦法讓線1,2和3並行執行而不是另一個?
將其轉換為具有適當依賴關係的Makefile.那麼你可以使用make -j來讓Make一切都可以並行執行.
請注意,Makefile中的所有縮排都必須是TAB. TAB顯示在哪裡執行命令.
另請注意,這個Makefile現在使用GNU Make擴充套件(萬用字元和subst函式).
它可能看起來像這樣:
export PATH := .:${PATH} FILES=$(wildcard file*) RFILES=$(subst file,r,${FILES}) final: combine ${RFILES} combine ${RFILES} final rm ${RFILES} ex: example.c combine: combine.c r%: file% ex ex $< $@
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/2791069/how-to-use-parallel-execution-in-a-shell-script