我有一个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


有什么方法可以使行123并行运行,而不是一个接一个地运行?

最佳答案

将其转换为具有适当依赖性的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 $< $@

关于unix - 如何在Shell脚本中使用并行执行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2791069/

10-11 23:20
查看更多