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

おすすめ記事