क्या कोई तरीका है जो मैं इसकी पुरानी परिभाषा के संदर्भ में एक बैश फ़ंक्शन को फिर से परिभाषित कर सकता हूं? उदाहरण के लिए, मैं फ़ंक्शन के प्रस्तावना के लिए कोड के निम्नलिखित ब्लॉक को जोड़ना चाहूंगा command_not_found_handle ()
,
# Check if $1 is instead a bash variable and print value if it is
local VAL=$(eval echo \"\$$1\")
if [ -n "$VAL" ] && [ $# -eq 1 ]; then
echo "$1=$VAL"
return $?
fi
इसे वर्तमान में /etc/profile.d/PackageKit.sh में परिभाषित किया गया है और बैश स्टार्ट-अप स्क्रिप्ट द्वारा खट्टा किया गया है।
इस तरह मैं कमांड प्रॉम्प्ट पर एक पर्यावरण चर के मान को केवल चर नाम लिखकर (और बशर्ते कि ऐसा कोई आदेश मौजूद नहीं है) को क्वेरी कर सकता है। जैसे
user@hostname ~:$ LANG
LANG=en_AU.utf8
मुझे पता है कि मैं वर्तमान परिभाषा को कॉपी और पेस्ट कर सकता हूं और अपने स्वयं के परिवर्तनों को जोड़ सकता हूं ~/.bashrc
, लेकिन मैं अधिक सुरुचिपूर्ण तरीके की तलाश कर रहा हूं जिसमें कोड का पुन: उपयोग शामिल है।
मेरे लक्ष्य या कोड सुधार / विस्तार को प्राप्त करने के बेहतर तरीके भी सराहे जाते हैं।
eval
, आप अप्रत्यक्ष उपयोग कर सकते हैं:local VAL=$(echo ${!1})