![Bash: 날짜가 매개변수화되면 date -d가 "잘못된 날짜"를 발생시킵니다.](https://linux55.com/image/10193/Bash%3A%20%EB%82%A0%EC%A7%9C%EA%B0%80%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%ED%99%94%EB%90%98%EB%A9%B4%20date%20-d%EA%B0%80%20%22%EC%9E%98%EB%AA%BB%EB%90%9C%20%EB%82%A0%EC%A7%9C%22%EB%A5%BC%20%EB%B0%9C%EC%83%9D%EC%8B%9C%ED%82%B5%EB%8B%88%EB%8B%A4..png)
내 코드의 날짜를 다음과 같이 매개변수화할 때:
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)