2015-08-26 95 views
0

我在shell腳本新的,我期待喜歡這個輸出在Shell腳本中增加一週的日期名稱?

1 | 1 | odd | Monday 
1 | 2 | even |Tuesday 
    " 
    " 
1 | 7 | odd | Sunday 
2 | 1 | odd | Monday 
2 | 2 | even| Tuesday 
    " 
    " 
2 | 7 | odd | Sunday 
3 | 1 | odd | Monday 
3 | 2 | even| Tuesday 
    " 
    " 
3 | 7 | odd | Sunday 

我想下面的腳本

i=1 
j=1 
while [ $i -le 3 ] 
do 
     for ((j=1; j<=7; j++)) 
     do  
      if [ $(($j%2)) -eq 0 ]; 
      then  
        echo "$i | $j | even " 
      else  
        echo "$i | $j | odd" 
      fi 
     done 
    ((i++)) 
done 

我得到這樣的輸出

1 | 1 | odd 
1 | 2 | even 
    " 
    " 
1 | 7 | odd 
2 | 1 | odd 
2 | 2 | even 
    " 
    " 
2 | 7 | odd 
3 | 1 | odd 
3 | 2 | even 
    " 
    " 
3 | 7 | odd 

請幫幫我「星期日第四列中的名稱增量「我可以在哪裏添加星期名稱?

回答

0

date實用程序可以顯示星期幾,所以你只需要告訴她正確的日期。這是相對於實際日期偏移的解決方案。

dow=`date +%u` 
i=1 
j=1 
while [ $i -le 3 ] 
do 
     for ((j=1; j<=7; j++)) 
     do 
      offset=$(($j - $dow)) 
      dow_str=`date --date="$offset days" +%A` 
      if [ $(($j%2)) -eq 0 ]; 
      then 
        echo "$i | $j | even | $dow_str" 
      else 
        echo "$i | $j | odd | $dow_str" 
      fi 
     done 
    ((i++)) 
done 
+0

謝謝你的解決方案....但我有一個小疑問可以請解釋我... offset = $(($ j - $ dow)) dow_str ='date --date =「$ offset days 「+%A'那邊有什麼東西 –

+0

日+%A會顯示當天的實際日期。使用--date參數,您可以更改某個其他日期的實際日期。所以我們必須計算從實際日期到我們想要的日期的偏移量。 –

+0

也許更簡單的解決方案是@Rakholiya Jenish之一 –

0

你也可以用數組來做。存儲所有的天,一個數組:

declare -a week=('Sunday' 'Monday' 'Tuesday' 'Wednesday' 'Thursday' 'Friday' 'Saturday'); 

,然後訪問它,做它在用於與鍵j mod 7循環。這會給你從週一開始的星期幾名稱。