Variável de tempo de espera do arquivo?

1

Eu estou querendo saber se é possível dormir em um script bash ter um tempo variável que é lido a partir de um arquivo? Eu estou querendo executar operações no script que variam em tamanho que terão os horários definidos por outro script.

    
por user3001 18.02.2015 / 11:10

2 respostas

2

Para dormir o número de segundos especificado em timeout.txt file:

#!/bin/sh
read timeout <timeout.txt
date
sleep $timeout
date

Ou usando a sintaxe bash -específica:

#!/bin/bash
date
sleep $(<timeout.txt)
date
    
por jfs 19.02.2015 / 07:39
1

Geralmente isso é apenas uma questão de colocar as informações em seu script, não tanto sobre o comando sleep.

Vamos criar um script simples 'sleepytime' para obter as informações de um arquivo (suponho que exista apenas um valor inteiro nesse arquivo):

#!/bin/bash

sleep_time_X=$(cat "X.sleepytime")
sleep_time_Y=$(cat "Y.sleepytime")

echo "Going to sleep $sleep_time_X second(s)"
sleep $sleep_time_X
echo "Going to sleep $sleep_time_Y second(s)"
sleep $sleep_time_Y

então no prompt de comando:

$ touch Y.sleepytime
$ touch X.sleepytime
$ echo "1" > X.sleepytime 
$ echo "2" > Y.sleepytime
$ ./sleepytime
Going to sleep 1 second(s)
Going to sleep 2 second(s)

Mas parece que não é uma abordagem geralmente aplicável. O tempo de suspensão pode depender de fatores fora de nosso controle (por exemplo, solicitações de rede, downloads etc.). Então seria preferível esperar até que o trabalho seja feito. Isso pode ser feito com o comando wait . Vamos criar um script adicional que chame nosso script de suspensão acima:

#!/bin/bash

# Call the sleep script and send it to background (with '&')
./sleepytime &

echo "Waiting for sleepyhead"
wait

A saída é:

Waiting for sleepyhead
Going to sleep 1 second(s)
Going to sleep 2 second(s)

Observe que a saída do primeiro script vem depois de "Aguardando ...". Talvez seja uma opção para você ...

    
por Michael 18.02.2015 / 12:21