जहां तक मुझे पता है कि बैश फ़ंक्शन में स्थानीय चर बनाने के दो तरीके हैं: एक सबहेल बनाएं या प्रत्येक वैरिएबल को स्थानीय के रूप में घोषित करें।बैश में स्थानीय चर: स्थानीय बनाम सबहेल
उदाहरण के लिए:
# using local
function foo
{
local count
for count in $(seq 10)
do
echo $count
done
}
या
# using subshell
function foo
{
(
for count in $(seq 10)
do
echo $count
done
)
}
Obvisously संस्करण क्योंकि आप सभी चर स्थानीय घोषित करने के बारे में परवाह करने की जरूरत नहीं लिखने के लिए subshell का उपयोग कर सरल है (उल्लेख करने के लिए नहीं (पर्यावरण) getopts जैसे उपकरणों द्वारा निर्मित/निर्यात किए गए चर)। लेकिन मैं कल्पना कर सकता था कि एक सबहेल बनाने के ऊपर एक ओवरहेड है।
तो बेहतर दृष्टिकोण क्या है? पेशेवर/विपक्ष क्या हैं?
बाहर निकल जाएगा, अच्छी तरह से एक 1000 परीक्षणों पर 'time' आदेश चला और पाते हैं ओवरहेड से बाहर, मुझे लगता है कि यह अस्तित्व में छोटा है। – Anders