我有16个计算要做,我想批量启动它,以便同时使用我的机器的16个核心。 我想做一个这样的shell脚本:
#!/bin/ksh
for i in `seq 16`
do
cd directory$i
<batch command>
done
有可能吗?
答案 0 :(得分:3)
你可以。你必须确保它们作为后台任务运行,例如:
#!/bin/ksh
for i in `seq 16`
do
cd directory$i
<batch command> &
done
如果没有它,它将按顺序运行作业。您可能还希望通过使用wait
:
#!/bin/ksh
for i in `seq 16` ; do
cd directory$i
<batch command> &
done
wait # May depends on shell, bash/ksh waits for all
答案 1 :(得分:1)
无需反引号(外部命令)
#!/bin/ksh
for d in dir{1..16}; do
echo $d &
done
wait
echo done
btw schellcheck.net会说:
Use $(..) instead of legacy `..`