天天看點

使用動态變量進行動态資料比較

現在有一個需求,輸入一串數,輸入的數個數還不固定,需要得到最小的那個數和對應的下标

如果說傳入的數的個數固定,直接用for循環來得到最值 其實也不難。使用程式設計語言java,c等都可以實作。

使用動态變量可以很友善的初始化多個變量,對傳入的數進行統計和比較。

動态變量的初始化有如下幾種形式:

param_no=$#

#初始化環境變量,如果傳入5個數,則會初始化5個變量。

for i in {1..$param_no}

do

export par${i}_=`eval echo \\${${i}}`

done

min_sum=$par1_

min_par=par1_

for i in {2..$param_no};

j=`expr $i - 1`

tmp_cur_par=par${i}_

#得到動态的環境變量,對動态變量的值和其他變量進行比對。

tmp_cur_sum=`eval echo   \\${${tmp_cur_par}}`

if [ $min_sum -le $tmp_cur_sum  ]

then

 min_sum=$min_sum 

 min_par=$min_par

else 

 min_sum=$tmp_cur_sum 

 min_par=$tmp_cur_par

fi

echo  $min_par

簡單測試如下:

>$ ksh min.sh 8 9 2 4 5

2 par3_sum

小數也是可以支援的

>$ ksh min.sh 88 99.5 1.1 10 55

1.1 par3_sum

9個數進行比較

$ ksh min.sh 4 5 6 3 2 9 2 1 2

1 par8_sum

2個數進行比較

$ ksh min.sh 2 5

2 par1_sum