2012-01-09 17 views
7

मैं संवाद इंटरफ़ेस का उपयोग कर बैश लिपि में एक radiolist बनाने की जरूरत है, अगर मैं निम्नलिखित सूची है उदाहरण के लिए एक radiolist पर आइटम का नाम पाने के लिए:बैश पटकथा: कैसे का उपयोग कर संवाद

dialog --backtitle "OS infomration" \ 
--radiolist "Select OS:" 10 40 3 \ 
1 "Linux 7.2" off \ 
2 "Solaris 9" on \ 
3 "HPUX 11i" off 

मैं चाहता हूँ कि जब उपयोगकर्ता एक विकल्प चुनते हैं और ठीक है मेरी स्क्रिप्ट आइटम नाम (और आइटम संख्या नहीं) ठीक है दबाएं।

यह संभव है? धन्यवाद!

उत्तर

3

आप एक सरणी में अपनी उम्मीद परिणाम रख सकते हैं:

array=(Linux Solaris HPUX) 
var=$(dialog --backtitle "OS infomration" \ 
--radiolist "Select OS:" 10 40 3 \ 
1 "Linux 7.2" off \ 
2 "Solaris 9" on \ 
3 "HPUX 11i" off >/dev/tty 2>&1) 

printf '\n\nYou chose: %s\n' "${array[var - 1]}" 
+0

मैं ऐसी ही कुछ सोचा है, लेकिन वहाँ एक सीधा समाधान नहीं है? उदाहरण के लिए जब आप एक इंपंट बॉक्स का उपयोग करते हैं, जहां सम्मिलित मान stderr पर संग्रहीत किया जाता है? – Ivan

+0

हो सकता है, लेकिन मुझे एक के बारे में पता नहीं है। यह आपका सबसे करीबी समाधान हो सकता है। कोई और जवाब के साथ झुका सकता है। – jordanm

+0

यह वह उत्तर है जिसे मैं ढूंढ रहा था - एक चेतावनी, पुनर्निर्देशन वाक्यविन्यास पीछे की ओर (सामान्य स्क्रिप्ट त्रुटि) है, यह होना चाहिए>/dev/tty 2> और 1 मुझे लगता है? http://www.gnu.org/software/bash/manual/bashref.html#Redirections – synthesizerpatel

संबंधित मुद्दे