私のコードの日付を次のようにパラメータ化するとき:
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)