Мне нужно, чтобы возобновить обратный отсчет с 10, когда ctrl c нажата с помощью ловушки. Я могу заставить его перезапустить один раз, и в настоящее время он делает это, когда я нажимаю ctrl c, он перезапускается с 10. Но он делает это только один раз, мне нужно, чтобы он делал это каждый раз, когда нажимается ctrl c, перезапускается с 10, но не может получитьэто сделать это.
Я попробовал поискать в Google
#!/bin/bash
# This script demonstrates how to trap signals and handle them using functions
# Task: Add traps for the INT and QUIT signals. If the script receives an INT signal,
# reset the count to the maximum and tell the user they are not allowed to interrupt
# the count. If the script receives a QUIT signal, tell the user they found the secret
# to getting out of the script and exit immediately.
# Task: Explain in a comment how the line with the word moose in it works.
function cleanquit {
logger -t `basename "$0"` -i -p user.info -s "You found the secret to exiting the script"
exit 1
}
trap cleanquit SIGQUIT
function cleanint {
logger -t `basename "$0"` -i -p user.info -s "You are too early, try again"
countdown
trap - signals
}
trap cleanint SIGINT
#### Variables
programName="$(basename $0)" # used by error_functions.sh
sleepTime=1 # delay used by sleeptime
numberOfSleeps=10 # how many sleeps to wait for before quitting for inactivity
#### Functions
# This function will send an error message to stderr
# Usage:
# error-message ["some text to print to stderr"]
#
function error-message {
echo "${programName}: ${1:-Unknown Error - a moose bit my sister once...}" >&2
}
# This function will send a message to stderr and exit with a failure status
# Usage:
# error-exit ["some text to print" [exit-status]]
#
function error-exit {
error-message "$1"
exit "${2:-1}"
}
function usage {
cat <<EOF
Usage: ${programName} [-h|--help ] [-w|--waittime waittime] [-n|--waitcount waitcount]
Default waittime is 1, waitcount is 10
EOF
}
#### Main Program
# Process command line parameters
function countdown {
while [ $# -gt 0 ]; do
case $1 in
-w | --waittime )
shift
sleepTime="$1"
;;
-n | --waitcount)
shift
numberOfSleeps="$1"
;;
-h | --help )
usage
exit
;;
* )
usage
error-exit "$1 not a recognized option"
esac
shift
done
if [ ! $numberOfSleeps -gt 0 ]; then
error-exit "$numberOfSleeps is not a valid count of sleeps to wait for signals"
fi
if [ ! $sleepTime -gt 0 ]; then
error-exit "$sleepTime is not a valid time to sleep while waiting for signals"
fi
sleepCount=$numberOfSleeps
while [ $sleepCount -gt 0 ]; do
echo "Waiting $sleepCount more times for signals"
sleep $sleepTime
sleepCount=$((sleepCount - 1))
done
echo "Wait counter expired, exiting peacefully"
}
countdown
Я ожидаю, что он перезапустит скрипт с 10, когда ctrl c каждый раз, но он делает это только один раз