2016-05-20 55 views
2

通過以下代碼,我可以在Linux中來回滾動一天。設置下一個/前一個工作日

date -s 'tomorrow' 
date -s 'yesterday' 

我想要做同樣的事情,但不要跳過週末。

+1

我不明白的問題... – 123

+0

爲什麼永久設定日期?您可以使用'-d'而不是 – fedorqui

+0

我需要模擬我們的自動化測試中的「更改日期」事件。應用程序有邏輯來執行我們想要測試的'第二天'。 –

回答

0
if [[ $(date +%u) = 5 ]] ; then date --set="+3 days" ; else date --set="+1 days" ; fi 
if [[ $(date +%u) = 1 ]] ; then date --set="-3 days" ; else date --set="-1 days" ; fi 
1

下面給你下一個工作日(對於bash):

if [[ $(date +%u) -eq 5 ]] ; then date --date="next Monday" ; else date --date="next day" ; fi 
+0

我知道我們沒有使用codegolf,但我認爲這太難看了,不能共享:'date --date =「next $([[$(date +%u)-eq 5]] && echo」星期一「)日」' – Aaron

+0

你應該檢查dow = 5或6 – Kent

+0

是的。錯過了。實際上'> 4'就足夠了 – GMichael

1

這個腳本的日子將到下一個工作日。在事先警告之前,這些腳本會在週末跳過一天的時間。另外,它們不能移動到像busybox這樣的有限的shell。

week_day=$(date +%w) #get the week day as a number from 0 
if [[ $week_day == 5 || $week_day == 6 ]] #check to see if it is Fri or Sat 
then date -s 'next monday' #if it is Fri or Sat, the set day to next monday 
else date -s tomorrow #it is a different day of the week, go to the next day 
fi 

最後一週一天

week_day=$(date +%w) #get the week day as a number from 0 to 6 starting with 0 as Sunday 
if [[ $week_day == 0 || $week_day == 1 ]] #check to see if it is Sun or Mon 
then date -s 'last friday' #if it is Sun or Mon, the set day to last friday 
else date -s yesterday #it is a different day of the week, go to yesterday 
fi