मेरे पास एक स्क्रिप्ट है जहां उपयोगकर्ता इनपुट को कई बार मूल्यांकन करने की आवश्यकता है, समाधान पर काम कर रहा है समाधान मूल्यांकन बिट्स को फ़ंक्शन में रखना है, और हर बार जब मुझे आवश्यकता होती है तो फ़ंक्शन को कॉल करें इनपुट का मूल्यांकन करें। समस्या यह है कि जब मैं $1
चर (जो फ़ंक्शन के पहले चर पैरामीटर को संदर्भित करता है) को अद्यतन करने का प्रयास कर रहा हूं, तो मुझे त्रुटि संदेश "$ VARIABLE आदेश नहीं मिला" मिलता है।फ़ंक्शन के अंदर बैश अप्रत्यक्ष परिवर्तनीय असाइनमेंट
function input_handler() {
if is_integer $1; then
selid="$1 -1"
if [[ "$1" -le "0" ]]; then
echo "Please use a simple positive number!"
else
if [[ "$1" -le "${#array[*]}" ]]; then
eval $1="${array[selid]}"
echo "Ok, moving on..."
else
echo "That number seems too large, try again?"
fi
fi
else
if [ -e $2/$1 ]; then
echo "Ok, moving on..."
else
echo "That item is not on the list, try again!"
fi
fi
}
और इस आदेश:: अब
5
./test: line 38: 5=sun: command not found
ठीक है, पर चलती ...
:
input_handler $doctype $docpath
इस उत्पादन देता है
यहाँ कोड है यह लगभग सही है, लेकिन मैं क्या कर रहा हूँ आर doctype = सूरज है, नहीं 5 = सूरज, दूसरे शब्दों में मुझे $1
परिवर्तनीय नाम की आवश्यकता नहीं है। लाइन eval $1="${array[selid]}"
से eval doctype="${array[selid]}"
को बदलकर इस विशेष उदाहरण को ठीक किया गया है। लेकिन यह मेरी समस्या को ठीक नहीं करता है क्योंकि मुझे अलग-अलग नामों के साथ विभिन्न चरों पर इस फ़ंक्शन को चलाने की आवश्यकता है।
ठीक है, लेकिन मुझे अभी भी $ 1 के नाम की आवश्यकता नहीं है, क्या यह संभव है? –
पोजिशनल पैरामीटर केवल पढ़ने के लिए नहीं हैं। आप उन्हें 'सेट' के साथ बदल सकते हैं। – kojiro