공부할 때 사용하는 코드 몇 줄만 작성해야 하는데 정말 포기하고 있어요! 현재는 한 달의 날짜와 이에 상응하는 날짜를 나열할 수 있지만 이를 시스템 시계에 연결할 수 없으므로 매달 정확한 날짜 번호를 자동으로 가져옵니다.
내가 한 일은 다음과 같습니다.
#!/bin/bash
for (( i = 0; i < 30; ++i )); do
echo -e "$( date -d "now +${i} days" +"%a" )", ${i}
done
산출:
Fri, 0
Sat, 1
Sun, 2
Mon, 3
Tue, 4
Wed, 5
Thu, 6
Fri, 7
Sat, 8
Sun, 9
Mon, 10
Tue, 11
Wed, 12
Thu, 13
. . . .
.. . etc
나는 이 코드가 특정 달의 정확한 일수를 나열하기를 원합니다. 예를 들어 10월에는 /31/일이 있습니다. 11월에 코드를 실행하면 30일이 나열되고, 3월에 코드를 실행하면 31일이 나열되고, 2월에 실행하면 28일 또는 29일이 나열됩니다. 어떻게 해야 하나요?
답변1
사실, 당신은 가깝습니다. 다음은 몇 가지 사소한 수정 사항입니다.
#!/bin/bash
var=$(cal $(date +"%m %Y") | awk 'NF {DAYS = $NF}; END {print DAYS}') # Get number of days in a month
for (( i = 1; i < ${var}+1; ++i )); do
echo -e "$( date -d "now +${i} days" +"%a" )", ${i}
done
답변2
date
다음 달의 첫날을 요청하여 마지막 날을 계산한 다음 하루를 빼고 반복합니다.
begin=1
end=$(date -d "$(date -d "$(date -d "next month" +"%Y%m01")") - 1 day" +%d)
for((i=begin;i<end;i++))
do
date -d "$(date +%Y/%m/$i)" +"%a, $i"
done