घुंघराले ब्रेस हमेशा सरणी तत्वों तक पहुंचने और ब्रेस विस्तार को पूरा करने के लिए आवश्यक होते हैं।
{}
अस्पष्टता के लिए कोई गुंजाइश नहीं होने पर भी शेल वेरिएबल विस्तार के लिए सतर्क और उपयोग नहीं करना अच्छा है।
उदाहरण के लिए:
dir=log
prog=foo
path=/var/${dir}/${prog} # excessive use of {}, not needed since / can't be a part of a shell variable name
logfile=${path}/${prog}.log # same as above, . can't be a part of a shell variable name
path_copy=${path} # {} is totally unnecessary
archive=${logfile}_arch # {} is needed since _ can be a part of shell variable name
इसलिए, तीन पंक्तियों को लिखना बेहतर है:
path=/var/$dir/$prog
logfile=$path/$prog.log
path_copy=$path
जो निश्चित रूप से अधिक पठनीय है।
चूँकि एक चर नाम एक अंक से शुरू नहीं हो सकता है, शेल को {}
गिने हुए चर (जैसे $1
, $2
इत्यादि) की आवश्यकता नहीं है जब तक कि इस तरह के विस्तार को एक अंक के बाद नहीं किया जाता है। यह बहुत सूक्ष्म है और यह {}
ऐसे संदर्भों में स्पष्ट रूप से उपयोग करने के लिए बनाता है:
set app # set $1 to app
fruit=$1le # sets fruit to apple, but confusing
fruit=${1}le # sets fruit to apple, makes the intention clear
देख:
{}
ब्रेस विस्तार के रूप में जाना जाता है ।${}
चर विस्तार के रूप में जाना जाता है। वे अलग-अलग काम करते हैं। मैं तुम्हें कोई विस्तार बिट के अलावा upvote होगा।