Если я понимаю, Вы хотите бесконечный цикл:
while :; do
sleep 1
clear
# the command: echo, toilet, etc.
done
Возможно, проблема с часами состоит в том что расширение оболочки $(command ..)
сделан однажды, часы называют настолько, вывод не изменяется; измените двойные кавычки на одинарные кавычки
watch --interval 1 'cowsay $(fortune)'
Вы правы, команды в скриптах выполняются последовательно по умолчанию.
Вы можете выполнять команду в фоновом режиме, суффиксом &
(один амперсанд).
Команды в отдельных строках эквивалентны командам, объединенным по умолчанию ;
. Если вы скажете оболочке прервать работу с ненулевыми кодами выхода (set -e
), то скрипт будет выполнять команды так, как если бы все команды были объединены с &&
.
Если требуется ограничить 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
для возврата фоновой команды в фокус или задания
для просмотра списка фоновых задач.
Как говорили другие, вы должны добавить знак & в конце команды, которая должна выполняться в фоновом режиме.
Если вы хотите, чтобы скрипт выполнял все задачи одновременно, а затем закрывался, просто добавьте команду «ожидание» в конце скрипта. В таком сценарии bash ожидает завершения всех команд, пока не пойдет дальше.