#!/bin/bash
# get user input
ZENITY1=$(zenity --entry --text ' 1m: 60s\n 5m: 300s\n10m: 600s\n15m: 900s\n20m: 1200s\n25m: 1500s\n30m: 1800s\n35m: 2100s\n40m: 2400s\n45m: 2700s\n50m: 3000s\n55m: 3300s\n 1h: 3600s' --entry-text "Input only int in seconds!" --title "Timer")
# put starting date in variable
STARTTIME=$(date)
# audit/check user input
WAITINGTIME=$(echo $ZENITY1 | egrep "[0-9]{1,}" -o)
if [ "$WAITINGTIME" == "" ]; then exit 1; fi
# main stopwatch
for i in `seq $WAITINGTIME -1 1`; do echo $i | osd_cat -A left -p top -i 100 -c black -d 1; done
# time expired message
zenity --info --text="Time expired@\n$(date)\n\nStarted@\n$STARTTIME"
これは私のデスクトップのスクリプトです。誰かに警告する必要がある場合:「15分後に警告してください」しかし、より長い時間(例えば12時間)を使用すると、それほど正確ではありません!実際の時間と10分程度の差がある場合があります。
答え1
echo
継続的に時間がかかりすぎると、合計を4万回以上実行するオーバーヘッドを見ているようですosd_cat
。