Linux, как использовать динамические переменные
Я сделал сценарий оболочки, который делает некоторые вычисления. Пользователь вводит 2 числа: первое число является месяцем (если желаемой датой является февраль 2010 года, например, он вводит 2), вторым числом является год (если желаемой датой является февраль 2010 года, например, он вводит в 2010 году)
Затем мой сценарий вычислит количество дней, прошедших с каждого дня января 2000 года до даты, которую пользователь ввел, используя следующий код.
РЕДАКТИРОВАТЬ (были некоторые глупые синтаксические ошибки в моем коде)
a=$(echo "(14-$1)/12" | bc)
y=$(echo "$2 + 4800 - $a" | bc)
m=$(echo "12 * $a - 3 + $1" | bc)
jdn=$(echo "dd + ((153 * $m +2)/5) + (365 * $y) + ($y/4) - ($y/100) + ($y/400) - 32045" | bc)
Поскольку в месяце 31 день (да, в моем сценарии я буду предполагать, что в каждом месяце 31 день), моя переменная "dd" в последней строке кода изменится 31 раз.
Интересно, как это сделать, не копируя вставку формулы 31 раз, меняя код каждый раз.
1 ответ
Это может быть что-то вроде этого:
a=$((14-mm)/12 | bc)
y=$(yyyy + 4800 - $a | bc)
m=$(12 * $a - 3 + mm)
for dd in $(seq 1 31);
do
jdn=($dd + (153 * $m +2)/5 + 365 * $y + $y/4 - $y/100 + $y/400 - 32045)
done