Skip to content

Instantly share code, notes, and snippets.

@Sammers21
Last active June 4, 2017 21:29
Show Gist options
  • Save Sammers21/8558885e974c3ea3e6a10e7627da2df7 to your computer and use it in GitHub Desktop.
Save Sammers21/8558885e974c3ea3e6a10e7627da2df7 to your computer and use it in GitHub Desktop.
#!/bin/bash
# ./script [time] -m [message]
# ./script [time] -p [programm]
# time format 2017-06-04T21:58:00
function main(){
#проверяем что подано кака минимум 3 аргемнта на вход
if [ -n $3 ]; then
# проверяем что второй аргумент или -m или -p, инчае
if [ ! $2 = "-p" ] && [ ! $2 = "-m" ]; then
# выводим сообщения
echo valid usage:
echo "./script [time] -m [message]"
echo "./script [time] -p [programm]"
echo "time format: 2017-06-04T21:58:00"
# завершаем программу
exit 0
fi
# время в секунда на которое нужно заснуть
difference=$(($(date -d "$1" +%s) - $(date +%s)))
# если предыдущая команда завершился с кодом не 0, то значит произошла ошибка
# например было подано время не в вреном формате
if [ $? -ne 0 ]; then
# выводим сообщение
echo "time format: 2017-06-04T21:58:00"
# завершаем программу
exit 0
fi
# выводим время в секундах на которое нужно заснуть
echo $difference
sleep $difference
# если в sleep завершился с кодом не 0, то значит произошла ошибка
# например было подано отриццательное время
if [ $? -ne 0 ]; then
echo "invalid time to sleep"
exit 0
fi
# если вторым аргументом был подан флаг -m
if [ $2 = "-m" ]; then
# то удаляем 2 первых входных аргумента
shift
shift
# и выводим оставшиеся агрументы. т.е. все кроме двух первых
echo "$@"
else
# если вторым аргументом был подан флаг -p
# то удаляем 2 первых входных аргумента
shift
shift
# и запускаем ту программу переданную в остальных агрментах (3 и т.д.)
# $@ значит все переданные агрументы
$(echo $@)
fi
fi
}
# запускаем фунцию main со всем что было подано на вход скрипту
main $@
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment