如何在shell脚本中为循环设置超时



我正在学习shell脚本,我已经创建了shell(.sh) file来执行某些任务。我想做的是,遍历一个数组,并对该数组的每个对象执行特定的操作。如果该操作需要一分钟以上的时间,则移动到下一个对象,依此类推

仅供参考,这是我的第一个.sh文件。

问题:

  1. 我只能得到第一个值的结果,它不会移动到下一个对象。此外,在终端中,它看起来只是在后台运行。我必须强制停止它(ctrl+c(
  2. 超时是唯一的选择吗(根据我的研究,这就是我发现的(

代码:

#!/bin/sh
LOGFILE="MyLog.txt"
ENDPOINT=SOME_VALUE
PREFIX=Output
declare -a numbers=(1061 1071 1107 1158 1271 1273 1275 1276 1278 1279 1282 1288 1305 1406 1447 1455 1472 1488 1490 1491 1492 1572 1718)
for number in "${numbers[@]}" 
do 
echo "GetLogs: $number" >> $LOGFILE
SOME_OPERATION >> $LOGFILE # If this takes more than 1m then move on to next
timeout 1m >> $LOGFILE # Is this correct approach?
done

我找到了修复程序。脚本很好,它只是输出到日志文件中,正在创建一个问题。原因是,SOME_OPERATION正在下载.zip文件,该文件在尝试在日志中创建条目时产生了问题。

关注作品

#!/bin/sh
LOGFILE="MyLog.txt"
ENDPOINT=SOME_VALUE
PREFIX=Output
declare -a numbers=(1061 1071 1107 1158 1271 1273 1275 1276 1278 1279 1282 1288 1305 1406 1447 1455 1472 1488 1490 1491 1492 1572 1718)
for number in "${numbers[@]}" 
do 
echo "GetLogs: $number" >> $LOGFILE
SOME_OPERATION 
done

最新更新