linux如何使用动态变量

时间:2015-12-09 09:52:15

标签: bash shell sh command-substitution

我制作了一个做一些计算的shell脚本。 用户输入2个数字: 第一个数字是月份(如果需要的日期是2010年2月,例如他输入2) 第二个数字是年份(如果需要的日期是2010年2月,例如他在2010年提出)

我的脚本将计算从januari 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 个答案:

答案 0 :(得分:4)

可能是这样的:

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