Shell script нереста процесса после задержки

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

#!/bin/sh
# Echo A 60 seconds later, but without blocking the rest of the script
sleep 60 && echo "A"

echo "B"
echo "C"

Выход должен быть

B
C
... 60 seconds later
A

Мне нужно сделать все это за один script. То есть. не создавая второй script, который вызывается из первой оболочки script.

Ответы

Ответ 1

& запускает фоновое задание, поэтому

sleep 60 && echo "A" &

Ответ 2

Небольшое расширение остальных ответов - это ожидание фоновых команд в конце script.

#!/bin/sh
# Echo A 60 seconds later, but without blocking the rest of the script

set -e

sleep 60 && echo "A" &
pid=$!

echo "B"
echo "C"

wait $pid

Ответ 3

Не могу попробовать прямо сейчас, но

(sleep 60 && echo "A")&

должен выполнить работу

Ответ 4

Альтернатива:

echo 'echo "A"' | at now + 1 min

Если каким-либо образом ОС не работает в указанное время, команда будет выполнена, как только она станет доступной.