2013-11-26 47 views
1

我有腳本包含4個變量。需要一個函數來獲取這4個變量的值,並返回具有最低值的那個值。 所以我們可以說,我有: var1=55 var2=71 var3=30 var4=42 的話,我想它返回一個答案:var3 誰能幫助?我需要最簡單的方法來解決這個問題,但要感謝任何有效的解決方案Bash腳本:找到最低值的變量

+4

這是家庭的工作嗎?你目前寫了什麼代碼?你如何收集輸入?請更具體的問題。發佈您的代碼。讓讀者知道你的嘗試。這不是免費答案的地方。 – KeithSmith

+0

小提示:http://stackoverflow.com/questions/12882089/bash-variable-name-from-variable – PasteBT

+0

不,它不是作業。 代碼,我走到至今是: '#/斌/慶典 X = 12 Y = 35 Z = 7 Q = 24 VA = 0 VB = 0 NA = 0 NB = 0 minval = 0 minname = 0 if(($ x <$ y));那麼va = $ x na = x; else va = $ y na = y;如果(($ z <$ q));那麼vb = $ z nb = z;否則vb = $ q nb = q;如果(($ va <$ vb));那麼minval = $ va minname = $ na; else minval = $ vb minname = $ nb; fi echo $ minval echo $ minname ' – Grzegorz

回答

1

從你的問題我不認爲你的值是在一個數組中,並且你想知道數組中的哪個索引是最小的 - 我認爲你的值是在單個變量中,並且你想知道變量的名稱包含最小值。如果這真的是你要問的這個問題:

func() 
{ 
    minvar=$1 
    eval minval=\$$1 
    for i in $* 
    do 
    eval var=\$$i 
    # echo $i=$var 
    if [[ $var -lt $minval ]] 
    then 
     minvar=$i 
     minval=$var 
     # echo min=$i 
    fi 
    done 
} 

var1=55 
var2=71 
var3=30 
var4=42 
func var1 var2 var3 var4 
echo $minvar=$minval 
+0

似乎按照我的需要工作,但我需要進一步調查,我開始和我不熟悉'\ $$ 1'或'\ $$ i'不知道它實際上做了什麼。但是,它發現最小的變量,所以我可以繼續前進。 – Grzegorz