Я хочу, чтобы иметь возможность запускать скрипт в оболочке Linux (bash) на определенную продолжительность и спящий режим для другой продолжительности. Я написал что-то вроде следующего фрагмента. Тем не менее, я вижу, что только сон происходит правильно, но выполнение прекращается после первого выполнения.Запуск сценария оболочки на определенную продолжительность
#!/bin/bash
some_work(){
echo "Working for $1 minutes"
if [ $1 -gt 0 ]
then
echo "Setting timer for $1 minutes"
run_end_time=$(($1 * 60))
start_time=SECONDS
curr_time=SECONDS
while $((curr_time < $((start_time + run_end_time)))) :
do
#Do some work here
curr_time=SECONDS
done
fi
}
sleep_time(){
echo "Sleeping for $1 minutes"
sleep $(($1 * 60))
}
if [ $# -gt 1 ]
then
echo "Starting Steeplechase run for $1/$2"
while :
do
some_work $1
sleep_time $2
done
fi
Ответ, который я получаю ./script.sh: строка 30: 1: не найден. Может, мне здесь что-то не хватает.
Он должен быть 'в то время как ((...)); do' вместо 'while $ ((...)); do'. И двоеточие в конце этой строки должно быть ';' (или может быть удалено, как и все точки с запятой). –
В этой [веб-странице] (http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html0) приводятся некоторые примеры – vmachan
@Benjamin W. Я отредактировал фрагмент, чтобы отразить ваше предложение, но не обнаружил разницы в поведение. – Ananth