polecenie linux, aby uzyskać szczegóły kwartału

-1

Muszę ustawić bieżącą datę na komendę linux, która da mi wynik

 quarter number     

Mam dwa pytania

date +"%Yq$(expr $(expr $(date -d '-1 month' +%m) - 1) / 3 + 1)" 

wynik -> 2015q3 (bieżący kwartał)

date +"%Y %m" | awk '{q=int($2/4);y=$1;if (q==0){q=4;y=y-1;}; printf("%sq%s\n", y, q);}'

wynik -> 2015q2 (poprzedni kwartał)

Czy możesz pomóc w modyfikacji powyższych zapytań, aby uzyskać pożądany wynik? z góry dziękuję.

użytkownik
źródło

Odpowiedzi:

0

czasami KISS (uprość to) jest najłatwiejszą odpowiedzią:

year=$(date +%Y)
case $(date +%m) in
01|02|03) let year=year-1
          echo ${year}q4  1 oct $year - 31 dec $year oct nov dec ;;
04|05|06) echo ${year}q1  1 jan $year - 31 mar $year jan feb mar ;;
07|08|09) echo ${year}q2  1 apr $year - 31 jun $year apr may jun ;;
10|11|12) echo ${year}q3  1 jul $year - 31 sep $year jul aug sep ;;
esac

Najłatwiejszym sposobem użycia ich osobno jest dodanie ich jako funkcji w skrypcie powłoki, który chcesz wywołać, np .:

getquarter(){
    year=$(date +%Y)
    case $(date +%m) in
    01|02|03) let year=year-1
              qtr="${year}q4" range="1 oct $year - 31 dec $year" months="oct nov dec" ;;
    04|05|06) qtr="${year}q1" range="1 jan $year - 31 mar $year" months="jan feb mar" ;;
    07|08|09) qtr="${year}q2" range="1 apr $year - 31 jun $year" months="apr may jun" ;;
    10|11|12) qtr="${year}q3" range="1 jul $year - 31 sep $year" months="jul aug sep" ;;
    esac
}
getquarter
echo "last quarter was $qtr, from $range, for $months"

Jeśli nie możesz tego zrobić, możesz wywołać skrypt po wywołaniu funkcji i przekazać argumenty w cudzysłowach:

getquarter(){ ... as above }
getquarter
myscript "$qtr" "$range" "$months"
meuh
źródło
@ashwini Dodałem funkcję powłoki, która ustawia 3 zmienne, których możesz użyć, w tej samej powłoce.
Meuh
dzięki, pomogło to jednak, dlaczego używałeś pierwszego roku w przypadku?
użytkownik
@ Rok użytkownika jest początkowo ustawiony na „ten rok”. Jeśli jesteśmy w styczniu, lutym lub marcu, poprzedni kwartał przypada na ostatni rok, więc w tym przypadku zmieniamy rok na rok 1 dla echa i zmiennych.
Meuh