मैं जो करना चाहता हूं वह निम्नलिखित है। किसी फ़ंक्शन के अंदर, मुझे एक चर को मान असाइन करने की आवश्यकता है, जिसका नाम किसी अन्य चर से लिया जाता है। दूसरे शब्दों में:बैश: फ़ंक्शन के अंदर वैश्विक चर घोषित करना
func() {
#
# Here happens something that ultimately makes $arg="var_name"
#
declare -g ${arg}=5
}
func
echo ${var_name}; # Prints out "5"
उपरोक्त कोड स्निपेट बैश 4.2 में शानदार काम करता है। हालांकि, 4.2 से पहले बैश में, declare
में -g
विकल्प नहीं है। Google पर जो कुछ भी मैंने पाया वह कहता है कि एक फ़ंक्शन के अंदर वैश्विक चर को परिभाषित करने के लिए, मुझे केवल var=value
वाक्यविन्यास का उपयोग करना चाहिए, लेकिन दुर्भाग्यवश var
स्वयं अन्य चर पर निर्भर करता है। ${arg}=5
काम नहीं करता है, या तो। (यह -bash: var_name=5: command not found
कहते हैं।
उत्सुक के लिए, यह सभी के लिए कारण इस समारोह वास्तव में, स्क्रिप्ट मापदंडों से वैश्विक चर बनाता है यानी कि चल script --arg1=val
स्वचालित रूप से मूल्य val
साथ arg1
नामित चर पैदा करता है। एक बॉयलरप्लेट कोड की टन बचाता है।
आप स्ट्रिंग के रूप में अपना var = value बना सकते हैं और बैश बिल्टिन कमांड 'ev का उपयोग करके इसका मूल्यांकन कर सकते हैं। al'। – minopret
@minopret क्या आप अपनी टिप्पणी को उत्तर के रूप में दोबारा पोस्ट कर सकते हैं? जब तक कि कोई कम हैकिश समाधान के साथ आता है, मैं केवल आपके उत्तर को स्वीकार करूंगा, यह निश्चित रूप से काम करता है। – Leonid99