Предполагая, что вы хотите bsub
каждый сценарий, соответствующий шаблону "$testbench_dir"/cell/delay_*_*.sp.py
, вы можете заменить свой сценарий следующим:
#!/bin/sh
config_dir=/proj/ABC/users/nhannguyen/work/verif/qc/input
testbench_dir=/proj/ABC/users/nhannguyen/work/verif/qc/testbench/TT_p025c
for py in "$testbench_dir"/cell/delay_*_*.sp.py; do
bsub "$py" -c "$config_dir/sim.config.py" -m 1
done
Это /bin/sh
, а не csh
сценарий, но это не имеет значения.
Если вам нужно убедиться, что скрипты выполняются в определенном порядке (вышеперечисленное отсортирует файлы скриптов в лексикографическом порядке ), затем выполните двойной цикл:
#!/bin/sh
config_dir=/proj/ABC/users/nhannguyen/work/verif/qc/input
testbench_dir=/proj/ABC/users/nhannguyen/work/verif/qc/testbench/TT_p025c
maxi=300 # the largest number I in delay_I_J.sp.py
maxj=3 # the largest number J in delay_I_J.sp.py
i=0
until [ "$i" -gt "$maxi" ]; do
j=0
until [ "$j" -gt "$maxj" ]; do
bsub "$testbench_dir/cell/delay_${i}_${j}.sp.py" -c "$config_dir/sim.config.py" -m 1
j=$(( j + 1 ))
done
i=$(( i + 1 ))
done
Если вы хотите, чтобы скрипт отправлял задания только пакетами по 50 штук и имел возможность указать в командной строке, какой пакет отправлять, например,.
./script 3
(запустит пакет 3, т. е. задания 100 -149)
#!/bin/sh
batch=$1
if [ -z "$batch" ]; then
printf 'Usage: %s batchnumber\n' "$0" >&2
exit 1
fi
bstart=$(( (batch - 1)*50 ))
bend=$(( batch*50 - 1 ))
printf 'Submitting batch %d (jobs %d to %d)\n' "$batch" "$bstart" "$bend"
config_dir=/proj/ABC/users/nhannguyen/work/verif/qc/input
testbench_dir=/proj/ABC/users/nhannguyen/work/verif/qc/testbench/TT_p025c
count=0
for py in "$testbench_dir"/cell/delay_*_*.sp.py; do
if [ "$count" -gt "$bend" ]; then
break
fi
if [ "$count" -ge "$bstart" ]; then
bsub "$py" -c "$config_dir/sim.config.py" -m 1
fi
count=$(( count + 1 ))
done