1. 取子字串(substring)
2. 取得目前時間(以秒數表示,方便做運算)
3. 以迴圈跑過所有的輸入參數(loop through argv)
4. 在if判斷式中使用正規表示式(regular expression)
5. 攔截Ctrl+C
6. 隱藏/顯示指標(cursor)
7. 取消/復原鍵盤螢幕顯示(disable/enable keyboard echo)
8. 從螢幕讀一個字元,但不會無限等待(read with timeout)
先暫時寫這樣,有錯請指正
完整程式下載: https://sites.google.com/site/timothylin1/downloads/countdown.bash
2012-12-12 EDIT: 此程式已移到 github
# 方法1 str=codeblocks substr=${str:0:4} # 取從第0個字元算起4個字元(0~3) echo $substr # substr = "code" # 方法2 substr=`expr substr $str 1 4` # 用expr substr的時候,字串開頭是1不是0,後面的4是長度 echo $substr # substr = "code"
2. 取得目前時間(以秒數表示,方便做運算)
time=`date +%s` echo `expr $time + 100` # 可以直接做計算
3. 以迴圈跑過所有的輸入參數(loop through argv)
while [ $# -gt 0 ]; do param=$1 shift # 將所有參數移動一格($1=$2, $2=$3...) echo $param done
4. 在if判斷式中使用正規表示式(regular expression)
PATTERN=[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ if [[ 1.1.1.1 =~ $PATTERN ]]; then echo 1.1.1.1 match fi if [[ 1.a.1.1 =~ $PATTERN ]]; then echo 1.a.1.1 match fi # 最後印出的結果為 1.1.1.1 match
5. 攔截Ctrl+C
# 先宣告一個函式作為handler function ctrl_c_pressed { echo "Ctrl+C Pressed. Program now exits." exit 0 # 若這裡不寫exit的話,程式將繼續執行 } trap 'ctrl_c_pressed' INT # 把ctrl_c_pressed設為Ctrl+C handler
6. 隱藏/顯示指標(cursor)
tput civis # 隱藏指標 tput cnorm # 顯示指標
7. 取消/復原鍵盤螢幕顯示(disable/enable keyboard echo)
stty -echo # disable keyboard echo stty echo # enable keyboard echo
8. 從螢幕讀一個字元,但不會無限等待(read with timeout)
read -n 1 -t 0.1 ch # -t 0.1 意思是最多等待0.1秒
先暫時寫這樣,有錯請指正
2012-12-12 EDIT: 此程式已移到 github
1 則留言:
我自己做個筆記好了。
在最後一個done後面加上:
AUDIO_PATH="音樂檔案路徑"
mplayer -volume 100 "$AUDIO_PATH"
可當成鬧鐘。
有裝notify-send的話可以再加上
notify-send -i "喜歡的圖檔位置" -t 5000 "Time's up" "時間到啦!"
用螢幕的notify當作時間到的提醒。
張貼留言