Звук из источника звука в канал (stdout / stdin)

В ksh93:

$ printf '%(%F)T\n' 'next month, first Monday'
2017-04-03

bash, начиная с 4.2 теперь поддерживает %(<формат)T в своем printf байтине, но не способность разбирать этот вид выражения даты.

Если бы вам пришлось использовать bash и вы хотели использовать этот %(<формат>)T, вы могли бы сделать это без форка с помощью чего-то вроде:

printf -v code '%(
  t=$((%s + (12 - %-H) * 60 * 60))
  increment=$((8 - %u))
  current_month=%m)T' -1
eval "$code"
until
  t=$((t + increment * 24 * 60 * 60)) # next Monday around mid-day
  printf -v code '%(date=%F month=%m)T' "$t"
  eval "$code"
  [ "$month" != "$current_month" ] # until be get to next month
do
  increment=7 # the first increment is the number of days
              # til Monday. Next increments are just a week.
done
echo "$date"
1
08.11.2017, 16:01
0 ответов

Теги

Похожие вопросы