超时时跳过循环迭代

超时时跳过循环迭代

所以我有这样的代码。它运行两个外部脚本,有时它们运行时间太长。我想限制它们的执行,为每个循环迭代添加超时,但我不知道如何实现。

files=($pathgtp/*.*)

i=0
while [ $i -lt ${#files[*]} ]; do
  f=${files[$i]}
  o=$(basename -- "$f")
  o=${o%.*}
  o=$pathmid/$o.mid
  $PWD/GuitarProToMidi "$f" -o "$o" -f # first script here
  $pythonvenv $pythonscript "$o" # second script here
  rm "$o" # remove temporary file
  ((i++))
done

答案1

您可以使用timeoutGNU coreutils.从man timeout

姓名

timeout- 运行有时间限制的命令

概要

 timeout [OPTION] DURATION COMMAND [ARG]...
 timeout [OPTION]

描述

开始COMMAND,如果还在追的话就杀掉它DURATION

[...]

相关内容