如何在shell脚本的for循环中设置超时?

问题描述 投票:0回答:1

我正在学习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
shell
1个回答
0
投票

我找到了修复方法。脚本很好,只是输出到日志文件的时候产生了一个问题。原因是,SOME_OPERATION下载了 "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
© www.soinside.com 2019 - 2024. All rights reserved.