2015-12-09 48 views
0

我做了一個shell腳本來做一些計算。 用戶輸入2個數字: 第一個數字是月份(如果需要的日期是2010年2月,例如他輸入2) 第二個數字是年份(如果期望的日期是2010年2月,例如他在2010年投入)linux如何使用動態變量

然後,我的腳本將計算從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

A for循環?在這個例子中,我該如何做到這一點? – Joey

回答

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  
+0

@Aaron我改變了,謝謝你的評論。 –