Я читал обсуждение обратного вызова bash, jlliagre опубликовал удивительный пример.
Пример обратного вызова, опубликованный jlliagre
Перечислите основные моменты здесь.
1.Создайте пример обратного вызоваи запустите его на терминале с ./callback-example
.
#!/bin/bash
myCallback() {
echo "I've been called at $(date +%Y%m%dT%H%M%S)"
}
# Set the handler
trap myCallback SIGUSR1
# Main loop. Does nothing useful, essentially waits
while true; do
read foo
done
2. На другом терминале отправьте сигнал USR1 процессу оболочки.
$ pkill -USR1 callback-example
Автор говорит: каждый сигнал отправлендолжно вызвать отображение строк, подобных этим, в первом терминале:
I've been called at 20180925T003515
I've been called at 20180925T003517
Я обнаружил, что в моем bash такого не происходит, как это исправить и запустить в bash?