Windows 날짜 논리를 Unix로 변환 [닫기]

Windows 날짜 논리를 Unix로 변환 [닫기]

Windows 배치 스크립트에 다음 논리를 작성했으며 Unix에서도 동일한 논리를 복제해야 합니다.

# Calculating  Yesterday's Date

for /F "tokens=1-4 delims=/- " %%a in ('date/T') do set  DY=%%c
for /F "tokens=1-4 delims=/- " %%a in ('date/T') do set  MON=%%b
for /F "tokens=1-4 delims=/- " %%a in ('date/T') do set /a YEAR=%%d


if [ $DY=="08"  ]; then DAY=8 fi
if [  $DY=="09" ]; then  DAY=9 fi
if [ $MON=="08" ]; then  MONTH=8 fi
if [ $MON=="09" ]; then  MONTH=9 fi
if [ $DY -ne "08" ]; then  if [ $DY -ne "09" ]; then DAY=%DY% fi fi
if [ $MON -ne "08" ]; then  if [ $MON -ne "09" ]; then MONTH=%MON% fi fi



PREVDAY=%DAY%-1
PREVMONTH=%MONTH%-1
PREVYEAR=%YEAR%-1
ds=%YEAR%_%MONTH%_%PREVDAY%-  


if [ %DAY%==1 ]; then if [ %PREVMONTH%==1 ] then ds=%YEAR%_%PREVMONTH%_31- fi fi
if [  %DAY%==1 ]; then if [ %PREVMONTH%==2 ] then ds=%YEAR%_%PREVMONTH%_28- fi fi
if [ %DAY%==1 ]; then if [ %PREVMONTH%==3 ] then ds=%YEAR%_%PREVMONTH%_31- fi fi
if [  %DAY%==1 ]; then if [ %PREVMONTH%==4 ] then ds=%YEAR%_%PREVMONTH%_30- fi fi
if [  %DAY%==1 ]; then if [ %PREVMONTH%==5 ] then ds=%YEAR%_%PREVMONTH%_31- fi fi
if [ %DAY%==1 ]; then if [ %PREVMONTH%==6 ] then  ds=%YEAR%_%PREVMONTH%_30- fi fi
if [  %DAY%==1 ]; then if [ %PREVMONTH%==7 ] then ds=%YEAR%_%PREVMONTH%_31- fi fi
if [  %DAY%==1 ]; then if [ %PREVMONTH%==8 ] then ds=%YEAR%_%PREVMONTH%_31- fi fi
if [  %DAY%==1 ]; then if [ %PREVMONTH%==9 ] then ds=%YEAR%_%PREVMONTH%_30- fi fi
if [  %DAY%==1 ]; then if [ %PREVMONTH%==10 ] then ds=%YEAR%_%PREVMONTH%_31- fi fi
if [  %DAY%==1 ]; then if [ %PREVMONTH%==11 ] then ds=%YEAR%_%PREVMONTH%_30- fi fi
if [  %DAY%==1 ]; then if [ %PREVMONTH%==0 ] then  ds=%PREVYEAR%_12_31- fi fi

답변1

어때요?

date -d "yesterday" "+%y_%m_%d-"
14_07_08

또는 4자리 연도의 경우:

date -d "yesterday" "+%Y_%m_%d-"
2014_07_08

변수에 할당하려면 다음을 사용하십시오.

d=$(date -d "yesterday" "+%y_%m_%d-")

그 다음에:

echo "$d"
14_07_08

또는:

echo "Yesterday was $d"
Yesterday was 14_07_08

관련 정보