ബാഷ് പ്രോഗ്രാമിംഗ് - ഭാഗം 3

പാരാ സുരക്ഷിത നമ്മുടെ ആശയങ്ങൾ ബാഷിൽ മികച്ച രീതിയിൽ പ്രവർത്തിക്കുന്ന പ്രോഗ്രാമിംഗിനായി വളരെ ഉപയോഗപ്രദമായ 2 ഉപകരണങ്ങൾ ഞങ്ങൾ പഠിക്കും. സൃഷ്ടിക്കാൻ പഠിക്കുക പ്രവർത്തനങ്ങൾ നിർവചിക്കുക പൈപ്പ്ലൈനുകൾ ആദ്യം സങ്കീർണ്ണമാണെന്ന് തോന്നുമെങ്കിലും, പിന്നീട് നാം വളരെയധികം കാണും യൂട്ടിലിറ്റി അവർ ഞങ്ങൾക്ക് നൽകുന്നു.

പൈപ്പുകൾ

പ്രത്യേകിച്ചും, വളരെയധികം വളവുകൾ എടുക്കാതെ, ഒരു പ്രക്രിയയുടെ output ട്ട്‌പുട്ട് മറ്റൊന്നിന്റെ ഇൻപുട്ടായി നയിക്കാൻ അനുവദിക്കുന്ന ഒരു രീതിയാണ് പൈപ്പ്ലൈൻ, ഇത് കോഡിന്റെ വരികൾ കുറയ്ക്കുക, ഫലങ്ങൾക്കായി സംഭരണ ​​വേരിയബിളുകൾ വിതരണം ചെയ്യുക, മെച്ചപ്പെടുത്തുക സ്ക്രിപ്റ്റിന്റെ കാര്യക്ഷമത.

ഒരു ചിഹ്നം | അത് പദപ്രയോഗങ്ങളെ സംയോജിപ്പിക്കാൻ അനുവദിക്കുന്നു; ഇത് സ്ഥിരസ്ഥിതിയായി ഉപയോഗിക്കുന്നുണ്ടെങ്കിലും, പൈപ്പുകൾ സൃഷ്ടിക്കാൻ മറ്റ് വഴികളുണ്ട്.

ഉദാഹരണം: സമീപകാല കേർണൽ സന്ദേശങ്ങൾ അച്ചടിക്കുക

#dmesg സമീപകാല കേർണൽ സന്ദേശങ്ങളും ലോഡുചെയ്ത ഡ്രൈവറുകളും കാണാൻ നിങ്ങളെ അനുവദിക്കുന്നു # സിസ്റ്റം ബൂട്ട്; വാൽ ഒരു ഫയലിന്റെ അവസാന ഭാഗങ്ങൾ അല്ലെങ്കിൽ # കമാൻഡ് പ്രിന്റുചെയ്യുന്നു

dmesg | വാൽ

അവ നമുക്ക് ആവശ്യമുള്ളത്ര സങ്കീർണ്ണമാക്കുമെങ്കിലും, ഒരു പൈപ്പ്ലൈനിന്റെ അടിസ്ഥാന ഘടന ഒരു കമാൻഡിന്റെ ഫലം അടുത്തതിലേക്ക് ഇൻപുട്ടായി ഉപയോഗിക്കാൻ അനുവദിക്കുന്നു, ഞങ്ങൾ തുടർച്ചയായി പൈപ്പുകൾ ചേർക്കുന്നത് തുടരുകയാണെങ്കിൽ പുതിയ കമാൻഡിനായി ഇൻപുട്ട് നൽകാൻ കഴിയും.

ഫങ്ഷനുകൾ

ഫംഗ്ഷനുകൾ‌ ഒന്നിച്ച് ഗ്രൂപ്പുചെയ്‌തിരിക്കുന്ന ഒരു കൂട്ടം പ്രസ്താവനകളാണ്, അതിനാൽ‌ അവ തിരുത്തിയെഴുതാതെ തന്നെ നിരവധി തവണ നടപ്പിലാക്കാൻ‌ കഴിയും. ഒരു തരം ഭക്ഷണം പാചകം ചെയ്യാൻ പഠിക്കുമ്പോൾ ഞങ്ങൾ അതിന്റെ പാചകക്കുറിപ്പ് ഒരു ഷീറ്റിൽ എഴുതുമെന്ന് ചിന്തിക്കുന്നതിന് തുല്യമാണ്, ആ ഭക്ഷണം പാചകം ചെയ്യാൻ ആഗ്രഹിക്കുമ്പോഴെല്ലാം അതേ പാചകക്കുറിപ്പ് ഉപയോഗിച്ച് ഒരു പുതിയ ഷീറ്റ് മാറ്റിയെഴുതുന്നതിനുപകരം ഞങ്ങൾ പാചകക്കുറിപ്പ് പരിശോധിക്കുന്നു.

ഒരുപക്ഷേ ഫംഗ്ഷനുകളെക്കുറിച്ചുള്ള ഏറ്റവും പ്രധാനപ്പെട്ട കാര്യം പാരാമീറ്ററുകൾ കൈമാറാനുള്ള സാധ്യതയാണ്, അവ പ്രോസസ്സ് ചെയ്യുന്നതിനും output ട്ട്‌പുട്ട് സൃഷ്ടിക്കുന്നതിനും അവർ ഉപയോഗിക്കുന്ന ഡാറ്റ. അതിന്റെ ഘടന ഇപ്രകാരമാണ്:

ഫംഗ്ഷൻ ഫംഗ്ഷൻ-നാമം {

പ്രക്രിയകൾ

}

ഉദാഹരണം: tcp പ്രോട്ടോക്കോളിൽ പ്രവർത്തിക്കുന്ന സേവനങ്ങൾ കാണിക്കുന്ന പ്രവർത്തനം. കൂടുതൽ പൈപ്പുകൾ എങ്ങനെ പ്രയോഗിക്കാമെന്നും നമുക്ക് കാണാൻ കഴിയും.

# ഞങ്ങൾ ഒരു ഫംഗ്ഷൻ പേര് നിർവചിക്കുന്നു, അത് ഞങ്ങൾ ഇഷ്ടപ്പെടുന്ന ഒന്നാകാം.

ഫംഗ്ഷനുകൾ services_tcp {

#cat / etc / services ഫോൾഡറിലെ ഉള്ളടക്കങ്ങൾ സംയോജിപ്പിച്ച് പ്രദർശിപ്പിക്കുന്നു, അത് # ബന്ധപ്പെട്ട എല്ലാ പോർട്ടുകളും ഉള്ള എല്ലാ സേവനങ്ങളും ഉൾക്കൊള്ളുന്നു.

# ആദ്യ grep ലിസ്റ്റ് എടുത്ത് അഭിപ്രായങ്ങൾ നീക്കംചെയ്യുന്നു, –v ഉപയോഗിച്ച് ഞങ്ങൾ ഫലം വിപരീതമാക്കും

# രണ്ടാമത്തെ grep tcp മായി ബന്ധപ്പെട്ടവ മാത്രം കാണിക്കുന്നു

പൂച്ച / etc / services | grep –v "^ #" | grep tcp

}

ഈ ഫംഗ്ഷൻ എക്സിക്യൂട്ട് ചെയ്യേണ്ടിവരുമ്പോൾ അതിനെ അതിന്റെ പേരിൽ വിളിക്കണം:

tcp_services

ഈ സാഹചര്യത്തിൽ ഇത് പാരാമീറ്ററുകൾ ഇല്ലാതെ പ്രവർത്തിക്കുന്നു; അവയിലുണ്ടെങ്കിൽ‌, ഞങ്ങൾ‌ അവ ചേർ‌ക്കേണ്ടതിനാൽ‌ പ്രവർ‌ത്തനം ശരിയായി പ്രവർ‌ത്തിക്കുന്നു, അല്ലാത്തപക്ഷം പ്രവർ‌ത്തനം ശരിയായി പ്രവർത്തിക്കില്ല. റിട്ടേൺ ഉപയോഗിക്കുന്നത് പ്രക്രിയയുടെ ഫലമായി ഒരു മൂല്യം നൽകാൻ ഒരു ഫംഗ്ഷനെ അനുവദിക്കുന്നു.

ഉദാഹരണം: 2 അക്കങ്ങളുടെ ആകെത്തുക കണക്കാക്കുന്ന ഇൻപുട്ട് പാരാമീറ്ററുകൾ ഉപയോഗിച്ച് പ്രവർത്തിക്കുക.

#! / ബിൻ / ബാഷ്
ഫംഗ്ഷൻ തുക ()
{
# നമുക്ക് ഉദ്ധരണികൾക്കുള്ളിൽ പ്രവർത്തനം നിർവ്വഹിക്കാം
"ഫലം = $ 1 + $ 2" അനുവദിക്കുക

# റിട്ടേൺ പൂർണ്ണസംഖ്യ നൽകുന്നതിന് അനുവദിക്കുന്നു. റിട്ടേൺ എക്സിക്യൂട്ട് ചെയ്തുകഴിഞ്ഞാൽ, മൂല്യം variable വേരിയബിളിനുള്ളിൽ നിക്ഷേപിക്കപ്പെടും.
റിട്ടേൺ $ ഫലം;
}
 
# സം ഫംഗ്ഷൻ വിളിക്കുന്നു, ഞങ്ങൾ 2 ഇൻപുട്ട് പാരാമീറ്ററുകൾ കടന്നുപോകുന്നു.

2 3 ചേർക്കുക

# ന്റെ മൂല്യം അച്ചടിക്കുന്നു? ഉദ്ധരണികളിലെ വേരിയബിളിന്റെ യഥാർത്ഥ മൂല്യം എക്കോ വിലയിരുത്തുന്നു
echo -e "ഫലം = $?";

ജുവാൻ കാർലോസ് ഓർട്ടിസിന് നന്ദി!


ലേഖനത്തിന്റെ ഉള്ളടക്കം ഞങ്ങളുടെ തത്ത്വങ്ങൾ പാലിക്കുന്നു എഡിറ്റോറിയൽ എത്തിക്സ്. ഒരു പിശക് റിപ്പോർട്ടുചെയ്യാൻ ക്ലിക്കുചെയ്യുക ഇവിടെ.

7 അഭിപ്രായങ്ങൾ, നിങ്ങളുടേത് വിടുക

നിങ്ങളുടെ അഭിപ്രായം ഇടുക

നിങ്ങളുടെ ഇമെയിൽ വിലാസം പ്രസിദ്ധീകരിച്ചു ചെയ്യില്ല.

*

*

  1. ഡാറ്റയുടെ ഉത്തരവാദിത്തം: മിഗുവൽ ഏഞ്ചൽ ഗാറ്റൻ
  2. ഡാറ്റയുടെ ഉദ്ദേശ്യം: സ്പാം നിയന്ത്രിക്കുക, അഭിപ്രായ മാനേജുമെന്റ്.
  3. നിയമസാധുത: നിങ്ങളുടെ സമ്മതം
  4. ഡാറ്റയുടെ ആശയവിനിമയം: നിയമപരമായ ബാധ്യതയല്ലാതെ ഡാറ്റ മൂന്നാം കക്ഷികളുമായി ആശയവിനിമയം നടത്തുകയില്ല.
  5. ഡാറ്റ സംഭരണം: ഒസെന്റസ് നെറ്റ്‌വർക്കുകൾ (ഇയു) ഹോസ്റ്റുചെയ്യുന്ന ഡാറ്റാബേസ്
  6. അവകാശങ്ങൾ: ഏത് സമയത്തും നിങ്ങളുടെ വിവരങ്ങൾ പരിമിതപ്പെടുത്താനും വീണ്ടെടുക്കാനും ഇല്ലാതാക്കാനും കഴിയും.

  1.   ഇല്ല പോയിന്റർ പറഞ്ഞു

    എനിക്ക് ഉറപ്പില്ല, പക്ഷേ ഫംഗ്ഷനുകളുടെ റിട്ടേൺ സ്റ്റേറ്റ്മെന്റ് "എക്സിറ്റ്" ന്റെ പിശക് കോഡുകൾ പോലെ 0 നും 255 നും ഇടയിൽ ഒരു സംഖ്യ തിരികെ നൽകാൻ മാത്രമേ സഹായിക്കൂ, സാധാരണയായി 0 എല്ലാം ശരിയാണെങ്കിൽ മറ്റ് കേസുകൾക്ക് മറ്റൊരു നമ്പറും. ഉദാഹരണത്തിൽ ഇത് പ്രവർത്തിക്കുന്നുണ്ടെങ്കിലും, ഫലം മടക്കിനൽകുന്നത് നല്ല പരിശീലനമാണെന്ന് ഞാൻ കരുതുന്നില്ല.
    അവിടെ ഞാൻ ഒരു വിഡ് ense ിത്തമാണ് പറയുന്നത്! കണ്ണ്! ഹ!

  2.   ജുവാങ്ക് പറഞ്ഞു

    സത്യം എന്നെ സംശയിച്ചു. ഏത് സാഹചര്യത്തിലും, ഫംഗ്ഷനുകളിലെ പ്രശ്നങ്ങൾ ഒഴിവാക്കാൻ, ഫംഗ്ഷൻ ഒരു മൂല്യമോ സ്ട്രിംഗോ തിരികെ നൽകാനോ പ്രിന്റുചെയ്യാനോ ശ്രമിക്കുന്ന സാഹചര്യത്തിൽ ഞങ്ങൾക്ക് റിട്ടേൺ എക്കോ ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കാം.

  3.   ആബെൽ എസ്. മ Mount ണ്ട് ബിഗ് പറഞ്ഞു

    ഇത് ശരിയാണ്, ഇത് പരിഹരിക്കുന്നതിന് നിങ്ങൾക്ക് bc കമാൻഡ് ഉപയോഗിക്കാം, ആകെ ഫംഗ്ഷനിൽ: ഫലം = `എക്കോ $ 1 + $ 2 | bc -ql`

  4.   ലൂയിസ് മിഗുവേൽ പറഞ്ഞു

    നല്ലത്,

    എനിക്ക് ബാഷ് ഫയലുകൾ എവിടെ സംരക്ഷിക്കാനാകുമെന്ന് അറിയാൻ ഞാൻ ആഗ്രഹിക്കുന്നു, അതുവഴി അവ സിസ്റ്റം വ്യാപകമായി പ്രവർത്തിക്കുന്നു, അത് ബിൻ ഡയറക്ടറിയല്ല, മറിച്ച് ബാക്കപ്പ് പകർപ്പുകൾ നിർമ്മിക്കാനുള്ള ഹോം ആകാം.

    നന്ദി, ആശംസകൾ.

  5.   ജോക്വിൻ പറഞ്ഞു

    വളരെ നന്ദി, ഞാൻ സ്ക്രിപ്റ്റുകളിൽ നിന്നാണ് ആരംഭിക്കുന്നത്, ഇത് വളരെ ഉപയോഗപ്രദമാണ് എന്നതാണ് സത്യം, നിങ്ങളുടെ അറിവ് പങ്കിടാൻ നിങ്ങൾ വളരെ ദയാലുവാണ്!
    നന്ദി!

    1.    നമുക്ക് ലിനക്സ് ഉപയോഗിക്കാം പറഞ്ഞു

      നന്ദി! ആലിംഗനം!
      പാബ്ലോ

  6.   ക്രിസ്റ്റ്യൻ പറഞ്ഞു

    വാക്യഘടന പിശക്: "(" അപ്രതീക്ഷിതം
    ഉദാഹരണം പ്രവർത്തിപ്പിക്കാൻ ശ്രമിക്കുമ്പോൾ എനിക്ക് ഒരു പിശക് സംഭവിച്ചു, ഞാൻ അത് അതേപോലെ പകർത്തി

    എന്തായിരിക്കാം? ഞാൻ ഉബുണ്ടു 14.10