2017-02-21 23 views
0

我掙扎與此代碼:慶典對話輸入框帶有可變進

komanda=$(dialog --title "COMMAND" --backtitle "ENTER COMMAND: " 
--inputbox "" 8 180 2>&1 >/dev/tty) 
if [ $? == 0 ] then 
    for ((j=0;j<$tlen;j++)) 
     do 
     shopnum=${selectedRPODS[j]} 
     $komanda #executing the entered comand with variables. 
    done 
fi 

當我輸入的輸入框的變量,參數傳遞的字符串。變量不工作時執行的$科曼達

例輸入文本:

ping $shopnum 

回報總是:

ping: unknown host $shopnum 

我想有變量作爲目的地爲平。我知道我對STDOUT做錯了什麼,但我找不到正確的方法來做到這一點。

在此先感謝。

回答

0

參數擴展不是遞歸的。如果輸入ping $shopnum,則$komanda擴展爲文字ping $shopnum,而不是ping 3或任何值分配給shopnum

在這種情況下,因爲你的目的是要執行任意shell代碼,你可以使用eval

eval "$komanda" 

然而,這將是更好地重新審視自己的設計,使得用戶不需要知道代碼中存在哪些變量名稱。

+0

謝謝你的工作。我非常關注STDOUT和對話,我甚至沒有想到這一點。 – icevzar