作者 主題: [csh shell]如何依據日期改變變數(已解)  (閱讀 2639 次)

0 會員 與 1 訪客 正在閱讀本文。

yokunandu

  • 可愛的小學生
  • *
  • 文章數: 7
    • 檢視個人資料
我不是很會訂題目......
不過我希望能做到的就是:
有個叫做version的變數,
希望他能在按下button時累加,
不過不知為何不能累加......
那個變數count是指今天按下button的次數,
像是今天下載了幾次這樣。
比方version=1212050(第一次時)
      version=1212051(第二次下載)
      .....
但是如果到了隔天,count就要歸零(所以version=1212060開始)
我目前的程式是這樣的:
代碼: [選擇]
dateis=`date | awk '{print $6}'`
#2012--->12
dateyear=`echo $dateis | tail -c 3`
monthis=`date | awk '{print $2}'`
if [ "$monthis" == "Dec" ]; then
datemonth="12"
fi
if [ "$monthis" == "Nov" ]; then
datemonth="11"
fi
if [ "$monthis" == "Oct" ]; then
datemonth="10"
fi
if [ "$monthis" == "Sep" ]; then
datemonth="9"
fi
if [ "$monthis" == "Aug" ]; then
datemonth="8"
fi
if [ "$monthis" == "Jul" ]; then
datemonth="7"
fi
if [ "$monthis" == "Jun" ]; then
datemonth="6"
fi
if [ "$monthis" == "May" ]; then
datemonth="5"
fi
if [ "$monthis" == "Apr" ]; then
datemonth="4"
fi
if [ "$monthis" == "Mar" ]; then
datemonth="3"
fi
if [ "$monthis" == "Feb" ]; then
datemonth="2"
fi
if [ "$monthis" == "Jan" ]; then
datemonth="1"
fi
Dayis=`date | awk '{print $3}'`
dateday=`echo $Dayis|awk '{printf "%02d", $1}'`

##dateyear=12年
##datemonth=12月
##dateDay=5日
#count=一天當中的次數→可能一天很多次

##version=v1212050版本
Houris=`date | awk '{print $4}' | awk -F':' '{print $1}'`
datehour=`echo $Houris|awk '{printf "%02d", $1}'`
##datehour=小時
Minuteis=`date | awk '{print $4}' | awk -F':' '{print $2}'`
dateminute=`echo $Minuteis|awk '{printf "%02d", $1}'`
##dateminute=分鐘

##timeis=1212051037什麼時候   

echo "<script type='text/javascript'>"
count=0
version="v$dateyear$datemonth$dateday$count"
timeis="$dateyear$datemonth$dateday$datehour$dateminute"
filename="hg"_"$version"_"$timeis"
echo "function StartCapture()"
echo "{"
echo "document.getElementById('btnStop').disabled = false;" ##下載時才顯示停止下載
        count=`expr $count + 1`

echo "alert(\"$count\");"##測試是否累加→但沒有累加(只加了一次)
echo "document.getElementById('btnStart').disabled = true;"
echo "}";
echo "function StopCapture()"
echo "{"
echo "document.getElementById('btnStart').disabled = false;" ##結束才又能下載
echo "document.getElementById('btnStop').disabled = true;" 
echo "}";
echo "</script>"
##若要判斷是否隔天,應該加在這裡
echo "<input id='btnStart' name='upd' value='開始' type='submit' onclick='javacript:StartCapture();'>"
echo "<input id='btnStop' name='upd' value='結束' type='submit' disabled='disabled' onclick='javacript:StopCapture();'>"
所以累加的部分是因為要reload網頁(網頁是cgi)還是判斷時間進行即可累加?
還有隔天count要歸零的部分......

先謝謝大家的幫忙喔!
« 上次編輯: 2012-12-10 14:16 由 yokunandu »
.(\ /)
(O.o)
(> <)

This is Bunny. Copy Bunny into your signature to help him on his way to world domination.

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17292
    • 檢視個人資料
    • http://www.study-area.org
Re: [csh shell]如何依據日期改變變數
« 回覆 #1 於: 2012-12-06 21:01 »
freeBSD不熟,如果是 gnu date 的話,
man date 或 info date 應該可以看到很多參數,
比如:datemonth=`date +%m`
datehour=`date +%H`
dateminute=`date +%M`



yokunandu

  • 可愛的小學生
  • *
  • 文章數: 7
    • 檢視個人資料
Re: [csh shell]如何依據日期改變變數
« 回覆 #2 於: 2012-12-10 13:51 »
經過看到計數器的範例,
我終於明白為什麼我的無法累加了。

原來要將數值存在檔案裡,
比方一開始是'0',
那麼檔案(ex: test.txt)裡的內容就是0。
cgi裡面則是以讀檔的方式讀取test.txt讓count=0。
等做了動作後(像我是下載),
就將count加一,並且寫入檔案。如此一來,才能真正地達到每做動作就累加,
否則,每次count都從0開始,難怪我的結果一直是1 :P
接著將'今天日期'也存起來,每次讀'今天日期',來判斷是不是要將count歸零?
如果'今天日期'與date不同,就要歸零。

所以總歸一句:
只要增加讀寫檔的動作。

還是謝謝大家的幫忙喔,
希望能幫忙有這種困擾的同仁 ;D
.(\ /)
(O.o)
(> <)

This is Bunny. Copy Bunny into your signature to help him on his way to world domination.