我编写了一个 shell 脚本,它运行大型模拟并将内容存储到一个临时文件中。我trap
在收到SIGINT
. 问题是,清理工作没有发生。我使用-x
调试选项运行,并且rm
命令已执行。尽管如此,该文件仍然存在。
代码:
exit_prog() {
rm tmp
exit 0
}
print_sim_params() {
echo "$cur_sz"
}
run_sim() {
cur_sz="$min"
while [ "$cur_sz" -le "$max" ]; do
./sim "$cur_sz" | awk '{ print $1, " ", $11 >> "tmp" }' &
wait
cur_sz=`expr $step + $cur_sz`
done
wait
}
trap exit_prog SIGINT
trap print_sim_params SIGUSR1
这是与-x
选项一起使用时的输出的一部分,正如您所看到的那样exit_prog
被调用。
+ run_sim
+ cur_sz=100
+ '[' 100 -le 110 ']'
+ ./sim 100 10000
+ wait
+ awk '{ print $1, " ", $11 >> "tmp" }'
++ expr 1 + 100
+ cur_sz=101
+ '[' 101 -le 110 ']'
+ ./sim 101 10000
+ wait
+ awk '{ print $1, " ", $11 >> "tmp" }'
++ exit_prog
++ rm tmp
++ exit 0