這可能有點奇怪。我有一個字符串,表示每週的「允許」時間。該字符串長度爲168個字符。每個字符都是1或0.每個字符代表一週中的一個小時。因此,字符串中的前24個字符表示星期日的「允許」小時數。接下來的24個字符是星期一等等。數字1表示「允許」,數字0表示不允許。以下是一個示例字符串:Bash:根據「允許字符串」檢查當前日期時間
000000111111111111111000000000111111111111111000000000111111111111111000000000111111111111111000000000111111111111111000000000111111111111111000000000111111111111111000
此字符串表示星期日至星期六早上6點到晚上9點的允許時間。很多時候,一週中的不同日子會有不同的允許時間。如果當前時間是「允許的」,我試圖弄清楚它是什麼。
我已經想通了,這些告訴我的當前日期和時間:
DATE=$(date)
day=$(echo $DATE | cut -d' ' -f1)
time=$(echo $DATE | cut -d' ' -f4 | cut -d: -f1-2 | tr -d ':')
不過,我想不出比較那些我的長字符串的一種優雅的方式。
任何幫助將不勝感激!
請注意:我正在使用BusyBox 1.19.4。這意味着awk,sed,grep等可能不是全功能的。 !:-(
EV
我被困在busybox 1.19.4上,並且在這行上出現「替換錯誤」:i = $ {seq :i:1}。我確信這個腳本可以在更完整的shell上運行......不幸的是,它並不適用於我。:-( – exvance
$ {seq:i:1}是一個bash語法,但是它可以用其他方法替換 – blackSmith
現在看一下編輯,我用AWK替換了煩人的部分,並且糾正了第一條語句(而不是用24乘以星期一,I正在平方) – blackSmith