Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

बैश एसोसिएटिव ऐरे में महारत हासिल करें: अपने डेटा को कुशलतापूर्वक नियंत्रित करें

यदि आपने कभी कोड लिखा है, चाहे वह शेल स्क्रिप्ट हो, पायथन स्क्रिप्ट, C++, या यहां तक कि स्क्रैच, तो आप जानते हैं कि वेरिएबल महत्वपूर्ण हैं। कंप्यूटर और कोडर वेरिएबल का उपयोग वेस्टेशन के रूप में करते हैं, जहां वे गुप्त रूप से जानकारी को आगे-पीछे पास करते हैं। उदाहरण के लिए, यदि आपको शेल स्क्रिप्ट में किसी उपयोगकर्ता के नाम को प्रोसेस करने की आवश्यकता है, तो आप एक वेरिएबल सेट कर सकते हैं, उसमें यूजरनेम डाल सकते हैं, और फिर कंप्यूटर को उस वेरिएबल पर कुछ करने का निर्देश दे सकते हैं (उदाहरण के लिए, इसे अधिकृत उपयोगकर्ताओं की सूची के विरुद्ध जांचें)। वेरिएबल महत्वपूर्ण हैं क्योंकि वे कोड को डायनामिक बनाने में सक्षम बनाते हैं: वे उस जानकारी के लिए प्लेसहोल्डर हैं जो हर बार कोड चलाने पर बदलने की उम्मीद है।

लेकिन वेरिएबल, क्योंकि वे इतने आम हैं, बल्कि अनियंत्रित भी हो सकते हैं। अक्सर, आप एक कोड प्रोजेक्ट में इतने सारे वेरिएबल इकट्ठा कर लेते हैं कि उन सभी को ट्रैक करना लगभग असंभव हो जाता है। आप चतुर कन्वेंशन का उपयोग कर सकते हैं, जैसे सभी संबंधित वेरिएबल को एक सामान्य स्ट्रिंग (user_name, user_pass, user_time, आदि) से प्रीफिक्स करना, या आप आसान संदर्भ के लिए उनके लिए एक मास्टर सूची बना सकते हैं, लेकिन यह सब ट्रैक रखने का ओवरहेड बोझिल हो सकता है।

इस समस्या का एक पारंपरिक उत्तर ऐरे रहा है। ये अधिकांश कोडिंग भाषाओं में अच्छी तरह से काम करते हैं, जिसमें बैश जैसी शेल स्क्रिप्टिंग भाषाएं शामिल हैं।

अधिकांश शेल इंडेक्स्ड ऐरे बनाने, हेरफेर करने और क्वेरी करने की क्षमता प्रदान करते हैं। सरल अंग्रेजी में, एक इंडेक्स्ड ऐरे चीजों की एक सूची है जिसे एक नंबर से प्रीफिक्स किया गया है। चीजों की यह सूची, उनके असाइन किए गए नंबर के साथ, एक सिंगल वेरिएबल में आसानी से लपेटी जाती है, जो इसे आपके कोड में "ले जाने" में आसान बनाता है।

हालांकि, बैश में एसोसिएटिव ऐरे बनाने की क्षमता शामिल है, और यह इन ऐरे को किसी अन्य ऐरे के समान मानता है। एक एसोसिएटिव ऐरे आपको केवल नंबर वाले मानों के बजाय कुंजी और मान जोड़े की सूची बनाने देता है।

आप मनमानी कुंजियों को मान निर्दिष्ट कर सकते हैं:

$ declare -A userdata
$ userdata[name]=seth
$ userdata[pass]=8eab07eb620533b083f241ec4e6b9724
$ userdata[login]=`date --utc +%s`

किसी भी कुंजी को क्वेरी करें:

$ echo "${userdata[name]}"
seth
$ echo "${userdata[login]}"
1583362192

आपके द्वारा ऐरे से अपेक्षित अधिकांश सामान्य ऐरे ऑपरेशन उपलब्ध हैं। उदाहरण के लिए, आप सभी मानों को सूचीबद्ध कर सकते हैं:

$ echo "${userdata[*]}"
8eab07eb620533b083f241ec4e6b9724 seth 1583362192

आप पूरे ऐरे को देख सकते हैं:

$ typeset -A
declare -A BASH_ALIASES='()'
declare -A BASH_CMDS='()'
declare -A userdata='([pass]="8eab07eb620533b083f241ec4e6b9724"
[name]="seth"
[login]="1583362192" )'

आप unset कमांड का उपयोग करके अपने ऐरे से आइटम भी हटा सकते हैं:

$ unset userdata[pass]
$ typeset -A
[...]
declare -A userdata='([name]="seth"
[login]="1583362192" )'

अंत में, आप पूरे ऐरे को खारिज कर सकते हैं।

$ unset "userdata[*]"

डेटा के लिए ऐरे

ऐरे संबंधित डेटा को एक साथ संग्रहीत करने के लिए उपयोगी उपकरण हैं। आप ज्यादातर मामलों में एक सादे पुराने वेरिएबल का उपयोग कर सकते हैं, लेकिन कभी-कभी एक सिंगल डेटा "ऑब्जेक्ट" के गुणों को एक ऐरे में संग्रहीत करना अधिक तार्किक होता है, ताकि डेटा समेकित और अनुक्रमित रहे। उदाहरण के लिए, यदि आप utmp से लॉगिन नाम और समय प्रोसेस कर रहे हैं, तो आपके लिए लॉगिन समय को उस उपयोगकर्ता के साथ जोड़ना अधिक उपयोगी होगा जिसे वह समय संदर्भित करता है, बजाय केवल दो डेटा ऑब्जेक्ट को बिना किसी स्पष्ट कनेक्शन के अलग-अलग वेरिएबल के रूप में संग्रहीत करने के।

इसके अलावा, वेरिएबल के विपरीत, एक ऐरे में एक प्रविष्टि को डेटा संग्रहीत करने से पहले मौजूद होने की आवश्यकता नहीं है। आपको डेटा संग्रहीत करने से पहले यह जानने की आवश्यकता नहीं है कि कितना डेटा संग्रहीत होने वाला है। यदि आप उस डेटा को प्रोसेस कर रहे हैं जिसे आप नियंत्रित या भविष्यवाणी नहीं कर सकते तो यह एक बड़ा लाभ हो सकता है: यदि आप नहीं जानते कि एक दिन से अगले दिन utmp में कितने उपयोगकर्ताओं की उम्मीद है, तो सभी प्रविष्टियों को समाहित करने के लिए एक स्क्रिप्ट बनाना कठिन है। एक ऐरे के साथ, हालांकि, आपको बस एक ऐरे घोषित करना होगा और डेटा को इसमें पढ़ना होगा, एक नई कुंजी और मान जोड़ी बनाते हुए जब तक आप डेटा को निगलने से बाहर नहीं निकल जाते।

ऐरे शक्तिशाली हैं, और वे बैश से परे प्रोग्रामिंग भाषाओं में आम हैं। अब उनका उपयोग शुरू करें!

  1. बैश का उपयोग करके अपने लिनक्स सिस्टम कॉन्फ़िगरेशन को आसानी से कैप्चर और साझा करें बैश का उपयोग करके अपने लिनक्स सिस्टम कॉन्फ़िगरेशन को आसानी से कैप्चर और साझा करें

    आपके लिनक्स कॉन्फ़िगरेशन को अन्य लोगों के साथ साझा करने के कई कारण हो सकते हैं। आप अपने सिस्टम पर किसी समस्या के निवारण में मदद ढूंढ रहे होंगे, या शायद आप उस एनवायरनमेंट पर गर्व करते हैं जिसे आपने बनाया है और इसे साथी ओपन सोर्स उत्साही लोगों के सामने प्रदर्शित करना चाहते हैं। आप बैश प्रॉम्प्ट पर c

  1. आवाज से उत्पादकता: विंडोज 10 वॉयस कंट्रोल मास्टर करें आवाज से उत्पादकता: विंडोज 10 वॉयस कंट्रोल मास्टर करें

    वॉयस रिकग्निशन के शुरुआती दिनों में, आप भाग्यशाली होंगे यदि आपके आधे शब्द पहचाने जाते, भले ही आप रोबोट की तरह धीरे बोलें। इन दिनों हर स्मार्टफोन में किसी न किसी प्रकार का वॉयस असिस्टेंट होता है जो आपके लिए जल्दी से नोट्स ले सकता है या एप्लिकेशन खोलने जैसे कार्य कर सकता है। हालांकि, यदि आपके पास विं

  1. Slack से Microsoft Teams में निर्बाध माइग्रेशन: अपने डेटा को आसानी से स्थानांतरित करें Slack से Microsoft Teams में निर्बाध माइग्रेशन: अपने डेटा को आसानी से स्थानांतरित करें

    यदि आपने Microsoft Teams के साथ आगे बढ़ने का फैसला किया है, तो आप अपने डेटा को Slack से भी आसानी से ले जा सकते हैं। यह प्रक्रिया IT एडमिन और पेशेवरों के लिए सबसे उपयुक्त है, और एडमिन के लिए डेटा को स्थानांतरित करते समय कुछ चरणों का पालन करना होता है। हमारे नवीनतम Teams गाइड में, हम देखेंगे कि आप Sla