बैश चर असाइनमेंट में एकल कोष्ठक


11

मैं बैश में सिंगल कोष्ठक के बारे में सोच रहा था। मुझे पता है कि इनका उपयोग उपखंडों में आदेशों को निष्पादित करने के लिए किया जाता है और उनका उपयोग सरणियों के निर्माण के लिए किया जाता है, लेकिन क्या उनका उपयोग किसी और चीज के लिए किया जाता है?

एक बात जो मेरा ध्यान आकर्षित करती है वह यह है कि जब आप चर असाइनमेंट का उपयोग करते हैं, जैसे

var=(hello)
echo $var    # hello

बैश एक त्रुटि या कुछ भी उत्पन्न नहीं करता है, और आउटपुट जैसा है

var=hello

क्या ये दोनों चर परिभाषाएँ समान हैं या इनमें कोई अंतर है?

जवाबों:


14

()उदाहरण के लिए, आपके मामले में कोष्ठक का उपयोग सरणी परिभाषा के रूप में किया जाता है

a=(one two three)   # array definition
echo "${a}"         # print first element of array a
echo "${a[0]}"      # print first element of array a
echo "${a[1]}"      # print *second* element of array a
echo "${#a[@]}"     # print number of elements in array a

यदि आप एक चर को सरणी में रखते हैं तो आपके पास सिर्फ एक तत्व है।


आपके अन्य प्रश्न का उत्तर देने के लिए कि क्या कोष्ठक का उपयोग किसी और चीज के लिए भी किया जाता है: इसमें कई परिस्थितियां हैं bashजो अन्य वर्णों के साथ संयोजन में उपयोग की जा सकती हैं:

  • कमांड प्रतिस्थापन: $()
  • प्रक्रिया प्रतिस्थापन: <()और>()
  • subshell: (command)
  • अंकगणितीय मूल्यांकन: (())
  • फ़ंक्शन की परिभाषा: fun () { echo x; }
  • ग्लोब में पैटर्न सूची: ?(), *(), +(), @(), !()( केवल तभी extglobहै सक्षम )

1
ठीक है, मैं वास्तव में उस के बारे में नहीं सोचा था। लेकिन क्या ऐसा var=(1 2 3); echo $varही है var=(1 2 3); echo ${var[0]}?
मटियास

हां, नतीजा bashवही है।
jimmij

क्या हमें इसमें जरूरत ""है echo "${a}"?
nn0p

@ nn0p हां हम करते हैं, अगर हम विभाजन और ग्लोब ऑपरेशन नहीं करना चाहते हैं a। उदाहरण के लिए विचार करें a=*, फिर कोशिश करें echo $aऔर echo "$a"
जिमीज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.