분기 세부 정보를 가져오는 Linux 명령

분기 세부 정보를 가져오는 Linux 명령

현재 날짜를 Linux 명령에 전달해야 출력이 제공됩니다.

 quarter number     

두 가지 문의사항이 있습니다

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

결과 -> 2015년 3분기(당분기)

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

결과 -> 2015년 2분기(전 분기)

원하는 결과를 얻기 위해 위의 쿼리를 수정하는 데 도움을 주시겠습니까? 미리 감사드립니다.

답변1

때로는 KISS(간단하게 유지)가 가장 쉬운 대답입니다.

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

이들을 개별적으로 사용하는 가장 쉬운 방법은 호출하려는 쉘 스크립트 내에 함수로 추가하는 것입니다. 예:

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"

그렇게 할 수 없다면 함수를 호출한 후 스크립트를 호출하고 인수를 따옴표로 묶어 전달할 수 있습니다.

getquarter(){ ... as above }
getquarter
myscript "$qtr" "$range" "$months"

관련 정보