Bash: 날짜가 매개변수화되면 date -d가 "잘못된 날짜"를 발생시킵니다.

Bash: 날짜가 매개변수화되면 date -d가 "잘못된 날짜"를 발생시킵니다.

내 코드의 날짜를 다음과 같이 매개변수화할 때:

str_last_log_date="2017-07-24"
last_log_date=$(date -d '${str_last_log_date}' +%s)
threshold_days_ago=$(date -d 'now - 2 days' +%s)
echo "last_log_date ${last_log_date}  thres_days_ago ${threshold_days_ago}"

오류가 발생합니다.

날짜: 잘못된 날짜 '${str_last_log_date}' last_log_date thres_days_ago 1500969455

하지만 날짜를 매개변수화하지 않고 직접 전달하면 올바른 결과가 나옵니다.

last_log_date=$(date -d '2017-07-24' +%s)
threshold_days_ago=$(date -d 'now - 2 days' +%s)
echo "last_log_date ${last_log_date}  thres_days_ago ${threshold_days_ago}"

마지막 로그 날짜 1500854400 thres_days_ago 1500969511

어떤 팁이 있나요?

답변1

작은따옴표로 묶으면 변수가 확장되지 않습니다. 대신 큰따옴표를 사용하세요.

date -d "${str_last_log_date}"

답변2

last_log_date=$(date -d '${str_last_log_date}' +%s)

다음으로 업데이트해야 합니다(작은따옴표 제거).

last_log_date=$(date -d ${str_last_log_date} +%s)

관련 정보