Вложение для цикла внутри цикла while на одной строке - PullRequest
0 голосов
/ 03 мая 2018

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

while true; do; sleep 10 && for i in `seq 3` do; sleep 1 && date; done; done

Это работает в сценарии:

#!/bin/ash
while true; do
    sleep 10
    for i in `seq 3`; do
        sleep 1 && date
    done
done

Если это уместно, это означает мигание светодиода в определенном шаблоне на Raspberry Pi, а не выводить дату, с помощью которой команда date просто видит, что происходит.

1 Ответ

0 голосов
/ 10 июня 2018

Попробуйте это:

while true; do sleep 10 ; for i in `seq 3`; do sleep 1 && date ; done ; done

После ключевого слова do не следует использовать полуколонну. Нет необходимости использовать && перед началом цикла for в вашем случае. Используя && до значения цикла for, выполняйте цикл, только если команда sleep 10 выполнена успешно.

В вашем случае, хотя вы используете && перед циклом for или нет, это дает поведение, которое будет таким же.

...