मैं एक बैश स्क्रिप्ट में स्ट्रिंग मान एकत्र करने की कोशिश कर रहा हूं। सबसे आसान तरीका है कि मैं स्ट्रिंग मानों को किसी सूची या सरणी संरचना में जोड़ सकता हूं जैसे कि मैं उन्हें अंत में बाहर निकाल सकता हूं?बैश में परिवर्तनीय सूची या सरणी संरचना? मैं इसे आसानी से कैसे जोड़ सकता हूं?
उत्तर
$ arr=(1 2 3)
$ arr+=(4)
$ echo ${arr[@]}
1 2 3 4
चूंकि बैश स्पैर सरणी का उपयोग करता है, इसलिए आपको इंडेक्स के रूप में तत्व गणना ${#arr}
का उपयोग नहीं करना चाहिए। आप फिर भी, इस तरह के सूचकांक की एक सरणी प्राप्त कर सकते हैं:
$ indices=(${!arr[@]})
foo=(a b c)
foo=("${foo[@]}" d)
for i in "${foo[@]}"; do echo "$i" ; done
बैश में एक सरणी के अंत तक जोड़कर के लिए नहीं बल्कि अस्पष्ट वाक्य रचना है:
myarr[${#myarr[*]}]=”$newitem”
डेनिस विलियमसन के उत्तर के मुताबिक, कुछ मामलों में यह गलत है; बैश सरणी स्पैस हैं, और सूचकांक $ {# myarr [*]} अंतिम सूचकांक नहीं हो सकता है। –
को जोड़ने के लिए क्या इग्नेसियो एक और जवाब में सुझाव दिया है:
foo=(a b c)
foo=("${foo[@]}" d) # push element 'd'
foo[${#foo[*]}]="e" # push element 'e'
for i in "${foo[@]}"; do echo "$i" ; done
$ for i in "string1" "string2" "string3"
> do
> array+=($i)
> done
$ echo ${array[@]}
string1 string2 string3
हालांकि सवाल के जवाब दिए और सुंदर पुराना है, मैं एक नाम स्थान-समाधान साझा करना चाहते हैं के रूप में यह किसी भी अन्य की तुलना में काफी तेजी से काम करता है ennukiller के उत्तर को छोड़कर तरीकों (मेरे 100k लाइन परीक्षणों पर यह मेरे ~ 14 सेकेंड के खिलाफ ~ 12 सेकेंड जीता, जबकि सूची-एपेंड समाधान में कुछ मिनट लगेंगे)।
आप निम्न चाल का उपयोग कर सकते हैं:
# WORKS FASTER THAN THESE LAME LISTS! ! !
size=0;while IFS= read -r line; do
echo $line
((++size))
eval "SWAMP_$size='$line'"
done
या आप निम्न कार्य कर सकते हैं:
#!/bin/bash
size=0
namespace="SWAMP"
ArrayAppend() {
namespace="$1"
# suppose array size is global
new_value="$2"
eval "${namespace}_$size='$2'"
eval "echo \$${namespace}_$size"
((++size))
}
ArrayAppend "$namespace" "$RANDOM"
ArrayAppend "$namespace" "$RANDOM"
ArrayAppend "$namespace" "$RANDOM"
ArrayAppend "$namespace" "$RANDOM"
ArrayAppend "$namespace" "$RANDOM"
जब तक दुभाषिया टैग सूची में है, यहाँ object oriented bash के लिए एक कड़ी है।
असाइनमेंट के लिए 'eval' का उपयोग न करें (विशेष रूप से उपयोगकर्ता इनपुट पर)! ** आपका कोड कोड इंजेक्शन के अधीन है और अत्यधिक असुरक्षित ** (और इसलिए टूटा हुआ) है! तो ... यह लंग सूची की तुलना में भी कम है ':) '। –
वैसे, यदि आपका एकमात्र लक्ष्य आपकी फ़ाइल लाइन को सरणी में लाइन से घुमाने के लिए है, तो Bash≥4 के साथ आपको 'mapfile':' mapfile -t lines
हालांकि, यदि आप पूछते हैं, तो मैं आपको 'eval' सुरक्षित रूप से उपयोग करने का एक बहुत ही कम ज्ञात तरीका दिखा सकता हूं ... –
- 1. बैश स्क्रिप्ट में परिवर्तनीय जो इसे
- 2. मैं सरणी में कुंजी मान जोड़े कैसे जोड़ सकता हूं?
- 3. मैं सी में दो सरणी कैसे जोड़ सकता हूं?
- 4. मैं स्ट्रिंग सरणी में नया आइटम कैसे जोड़ सकता हूं?
- 5. मैं सूची की पहली स्थिति में कैसे जोड़ सकता हूं?
- 6. मैं संरचना में सरणी कैसे घोषित कर सकता हूं?
- 7. मैं PHP के साथ आसानी से प्रत्येक आइटम को सरणी में कैसे गुणा कर सकता हूं?
- 8. क्या मैं एक्लिप्स के साथ आसानी से पैकेज में जावाडॉक जोड़ सकता हूं?
- 9. मैं हास्केल में हैंडल कैसे जोड़ सकता हूं?
- 10. मैं सूची सूची में असीमित रूप से पंक्तियों को कैसे जोड़ सकता हूं?
- 11. क्या मैं आसानी से पर्ल के लिए टेम्पलेट टूलकिट में नए निर्देश जोड़ सकता हूं?
- 12. मैं jQuery का उपयोग कर सरणी के सरणी में सरणी कैसे जोड़ सकता हूं?
- 13. मैं साइथन में पाइथन ऑब्जेक्ट्स की एक निश्चित-लंबाई, परिवर्तनीय सरणी कैसे बना सकता हूं?
- 14. मैं एंड्रॉइड लुक-बार कैसे आसानी से चला सकता हूं?
- 15. मैं अपना फॉर्म कैसे आसानी से आकार बदल सकता हूं?
- 16. यदि मॉडलस्टेट में कोई कुंजी मौजूद नहीं है, तो मैं इसे कैसे जोड़ सकता हूं? aspnetmvc1
- 17. मैं .apply() विधि में कॉलबैक कैसे जोड़ सकता हूं?
- 18. मैं मौजूदा java.io.ObjectStream में कैसे जोड़ सकता हूं?
- 19. मैं वायरसहार्क में कस्टम प्रोटोकॉल विश्लेषक कैसे जोड़ सकता हूं?
- 20. मैं श्रेणी में गैर अनुक्रमिक संख्या कैसे जोड़ सकता हूं?
- 21. मैं बैश में फ़ाइल से फ़ाइल नामों की एक सूची कैसे पढ़ सकता हूं?
- 22. मैं प्रोग्रामेटिक रूप से संपर्क कैसे जोड़ सकता हूं?
- 23. मैं WWW :: मशीनीज़ में प्रगति पट्टी कैसे जोड़ सकता हूं?
- 24. मैं एमैक्स लिस्प कोड को आसानी से कैसे लोड कर सकता हूं क्योंकि मैं इसे संपादित कर रहा हूं?
- 25. बैश - परिवर्तनीय यूआरएल
- 26. क्या मैं परिवर्तनीय नामों में वर्णों से बच सकता हूं?
- 27. मैं मौजूदा सूची से नई सूची कैसे बना सकता हूं?
- 28. बैश स्क्रिप्ट - डेटाबेस से परिवर्तनीय
- 29. मैं बैश फ़ंक्शन कैसे हटा सकता हूं?
- 30. मैं एक्सकोड में गतिशील लाइब्रेरी को कैसे जोड़ सकता हूं?
धन्यवाद! यह मैंने देखा है कि कुछ कोड से बहुत आसान लग रहा है ... – Joe