Учитывая введенную дату, я хочу написать функцию bash, которая будет выводить предыдущий рабочий день.Под этим я подразумеваю предыдущий неделя день (с понедельника по пятницу);Мне не нужно принимать во внимание праздники.Так, например, с учетом «2 января 2018 года» результат должен быть «1 января 2018 года» (даже если это выходной день), а с учетом «1 января 2018 года» результат должен быть «29 декабря 2017 года» (потому что 30 и 31 декабря были суббота и воскресенье).Мне не нужен какой-то определенный формат;просто что-то удобочитаемое и приемлемое для date -d
.
Я пробовал следующее, но, похоже, дата ввода не учитывается правильно:
function get_previous_busday()
{
DAY_OF_WEEK=`$1 +%w`
if [ $DAY_OF_WEEK -eq 0 ] ; then
LOOKBACK=-2
elif [ $DAY_OF_WEEK -eq 1 ] ; then
LOOKBACK=-3
else
LOOKBACK=-1
fi
PREVDATE=date -d "$1 $LOOKBACK day"
}
Я хочуприменить его на сегодня:
PREVDATE=$(get_previous_busday $(date))
echo $PREVDATE
и на вчерашний день:
PREVDATE=$(get_previous_busday (date -d "$(date) -1 day"))
echo $PREVDATE
Но это не работает:
main.sh: line 3: Fri: command not found
main.sh: line 4: [: -eq: unary operator expected
main.sh: line 6: [: -eq: unary operator expected
main.sh: line 11: -d: command not found
main.sh: command substitution: line 20: syntax error near unexpected token `date'
main.sh: command substitution: line 20: `get_previous_busday (date -d "$(date) -1 day"))'