Почему хеш-таблица оболочки не работала так, как я ожидал?Linux

Ответить
Anonymous
 Почему хеш-таблица оболочки не работала так, как я ожидал?

Сообщение Anonymous »

Я пишу простой сценарий оболочки для очистки каталога основного файла. Для этого я объявляю хеш-таблицу дат, чтобы идентифицировать некоторую константную дату (т. е. последний день предыдущего месяца). Но эта хеш-таблица дат, похоже, работала не так, как я ожидал. Я хочу знать, почему это произошло и как это исправить, спасибо.
ниже приведен шелл-код. Я ожидал, что размер до_ht будет равен 4, но на самом деле он равен 2.
date_fmt="+%Y%m%d"

today=$(date +%Y%m%d)
weekday=$(date +%u)
yesterday=$(date -d "yesterday" $date_fmt)
lastweek=$(date --date=-1week $date_fmt)
last_week_last_day=$(date --date=-${weekday}day $date_fmt)
monthday=$(date +%d)
last_month_last_day=$(date --date=-${monthday}day $date_fmt)
year_day=$(date +%j)
last_year_last_day=$(date --date=-${year_day}day $date_fmt)

echo "yesterday: ${yesterday}"
echo "last week last day: ${last_week_last_day}"
echo "last month last day: ${last_month_last_day}"
echo "last year last day: ${last_year_last_day}"

declare -A until_ht
until_ht["today"]="${yesterday}"
unitl_ht["this_week"]="${last_week_last_day}"
until_ht["this_month"]="${last_month_last_day}"
unitl_ht["this_year"]="${last_year_last_day}"

echo "hash item num: " "${#until_ht[@]}"
for k in "${!until_ht[@]}";do
echo $k " ${until_ht[$k]}"
done

и версия bash
bash --version
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.


Подробнее здесь: https://stackoverflow.com/questions/790 ... i-expected
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»