2
考慮以下僞代碼:檢查當前時間定義的時間範圍內對UNIX
#!/bin/ksh
rangeStartTime_hr=13
rangeStartTime_min=56
rangeEndTime_hr=15
rangeEndTime_min=05
getCurrentMinute() {
return `date +%M | sed -e 's/0*//'`;
# Used sed to remove the padded 0 on the left. On successfully find&replacing
# the first match it returns the resultant string.
# date command does not provide minutes in long integer format, on Solaris.
}
getCurrentHour() {
return `date +%l`; # %l hour (1..12)
}
checkIfWithinRange() {
if [[ getCurrentHour -ge $rangeStartTime_hr &&
getCurrentMinute -ge $rangeStartTime_min ]]; then
# Ahead of start time.
if [[ getCurrentHour -le $rangeEndTime_hr &&
getCurrentMinute -le $rangeEndTime_min]]; then
# Within the time range.
return 0;
else
return 1;
fi
else
return 1;
fi
}
是否有實施checkIfWithinRange()
的更好的辦法? UNIX中是否有內置功能可以使上述操作更容易?我是korn腳本編程新手,希望能爲您提供幫助。
什麼語言或環境是這樣嗎?標籤說'ksh',但看起來不像[Korn Shell](http://www.kornshell.com/)代碼。 –
爲了擴展我的問題,Unix是一個操作系統(操作系統家族),而不是一種編程語言。如何與日期進行交互將取決於您的編程語言而不是您的操作系統。 Unix上的兩種標準編程環境是shell和C,但您的示例代碼既不是。是的,你將不得不存儲開始時間和結束時間,並將它們與當前時間進行比較。你如何做到這一點取決於你使用的語言和環境; C中的struct,shell中的變量或文件,Java中的對象,數據庫中的列。 –
@BrianCampbell謝謝!我是UNIX新手,並且編寫了我想在korn shell中實現的示例僞代碼。在我自己嘗試後幾分鐘內會更新這個問題。 –