使用動態變數進行動態資料比較(r2筆記25天)
阿新 • • 發佈:2022-05-04
現在有一個需求,輸入一串數,輸入的數個數還不固定,需要得到最小的那個數和對應的下標 如果說傳入的數的個數固定,直接用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}; do 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 done 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