2016-08-25 3 views
0

Я хочу, чтобы мой скрипт для запуска в течение определенного периода времени, так же, как это:Как запустить скрипт bash на определенное количество времени?

timeout 10s ./script 

Однако я хочу интегрировать команду в моем сценарии

for a in {a..z}; 
do 
    for b in {a..z}; 
    do 
    echo "$a$b" 
    done 
done 

Я попытался положить timeout в цикле for, но он не работает. Как использовать команду тайм-аута в скрипте?

+0

этот сценарий не будет принимать никакого времени для запуска тайм-аут не запускается. Вы можете заменить петли на 'echo {a..z} {a..z}'. – karakfa

+0

да, но что, если я хочу закончить скрипт в 2 с вместо 10? – Dayne

ответ

0

Вы можете использовать фоновый процесс и собственный таймер. Не гарантируется, что он длится ровно 10 секунд, но обычно он будет близок.

for a in {a..z}; 
do 
    for b in {a..z}; 
    do 
    echo "$a$b" 
    done 
done & 
sleep 10; 
kill ${!} 
+0

спасибо, этот работает лучше всего. – Dayne

+0

@ Дайне, пожалуйста, примите ответ (зеленая галочка), если он работает лучше всего. Благодаря! – Eric

1
timeout 2s bash -c 'for a in {a..z}; 
do 
    for b in {a..z}; 
    do 
    echo "$a$b" 
    done 
done' 

это один из способов сделать это, но, как @karafka уже упоминалось, вы можете избежать цикл, делая

timeout 2s echo {a..z}{a..z} | sed 's/[[:blank:]]/\n/g' 

или даже

timeout 2s printf "%s\n" {a..z}{a..z} 
+1

для одного элемента в строке, возможно, лучше использовать 'printf '% s \ n" {a..z} {a..z} ' – karakfa

+0

Ударьте меня! Благодарю @ karakfa. Обновлено !! – sjsam