Как установить тайм-аут в сценарии оболочки внутри для l oop? - PullRequest
0 голосов
/ 07 мая 2020

Я изучаю сценарии оболочки, где я создал 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

1 Ответ

0 голосов
/ 07 мая 2020

Я нашел исправление. Сценарий был в порядке, он просто выводился в файл журнала, создавая проблему. Причина в том, что 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...