Последовательные команды

Если я понимаю, Вы хотите бесконечный цикл:

while :; do
  sleep 1
  clear
  # the command: echo, toilet, etc.
done

Возможно, проблема с часами состоит в том что расширение оболочки $(command ..) сделан однажды, часы называют настолько, вывод не изменяется; измените двойные кавычки на одинарные кавычки

watch --interval 1 'cowsay $(fortune)'
13
12.02.2015, 18:17
3 ответа

Вы правы, команды в скриптах выполняются последовательно по умолчанию.

Вы можете выполнять команду в фоновом режиме, суффиксом & (один амперсанд).

Команды в отдельных строках эквивалентны командам, объединенным по умолчанию ;. Если вы скажете оболочке прервать работу с ненулевыми кодами выхода (set -e), то скрипт будет выполнять команды так, как если бы все команды были объединены с &&.

25
27.01.2020, 19:52

Если требуется ограничить IP-адреса локальной локальной сетью, выполняется попытка запретить запросы, исходящие за пределы подсети. Для этого следует описать базовый IP-адрес и маску подсети, которые вместе определяют префикс и переменную часть допустимых адресов. Адреса в подсети должны начинаться с последовательности битов, не маскируемых маской подсети. Во многих домашних сетях используется адресное пространство 192,168,0. [0-255] , которое имеет базовый адрес 192,168,0,0 (последний октет не имеет значения, так как он будет маскирован), и маска подсети 255,255,255,0 .

Используемая нотация объединяет IP-адрес и маску подсети, просто отмечая IP-адрес, после чего следует косая черта и количество битов в маске подсети. Таким образом, сокращение для подсети, указанной выше, равно 192,168,0,0/24 . Отсюда видно, что ошибка /142 в конце IP-адреса. IPv4 адреса имеют длину 32 бита, и поэтому 142-битная маска подсети не имеет большого смысла (даже если бы она была ограничена 32 битами, вы бы получили сеть только с одним адресом!). Из вашей записи, я предполагаю, что xxx.x в середине два октета вашего адреса являются постоянными в вашей сети, так что вы хотели бы просто изменить 142 на 24.

Дополнительную информацию можно найти в разделе «Бесклассовая междоменная маршрутизация» ( Википедия , RFC ).

-121--229971-
set --
while [ "$(($#>5))" -eq "-${#status}" ]
do    "test"; ${status:+":"} sleep 3
      set '' "$@"
done

Если вы тестируете по дополнению, вы часто можете сделать намного больше с одним тестом.

-121--187381-

Чтобы ответить на второй вопрос, можно использовать & для запуска команды в фоновом режиме и продолжения работы со сценарием, не дожидаясь его завершения.

commandA & commandB

Если это выполняется на интерактивном терминале (вместо сценария), можно использовать fg для возврата фоновой команды в фокус или задания для просмотра списка фоновых задач.

2
27.01.2020, 19:52

Как говорили другие, вы должны добавить знак & в конце команды, которая должна выполняться в фоновом режиме.

Если вы хотите, чтобы скрипт выполнял все задачи одновременно, а затем закрывался, просто добавьте команду «ожидание» в конце скрипта. В таком сценарии bash ожидает завершения всех команд, пока не пойдет дальше.

1
02.12.2021, 14:34

Теги

Похожие вопросы