ബാഷിൽ ഫംഗ്ഷനുകൾ എങ്ങനെ ഉപയോഗിക്കാം

ഈ യുണിക്സ് ഷെൽ അധിഷ്ഠിത, പോസിക്സ്-കംപ്ലയിന്റ് കമ്പ്യൂട്ടർ ഭാഷ ഉപയോഗിച്ച് ബാഷിൽ ഫംഗ്ഷനുകൾ എങ്ങനെ ഉപയോഗിക്കാം. ഒരു ഭാഷയെന്ന നിലയിൽ, അതിന്റെ പ്രവർത്തനത്തിൽ ലിനക്സ് കമാൻഡുകളുടെ വ്യാഖ്യാനം അടങ്ങിയിരിക്കുന്നു, ഇത് ഞങ്ങളുടെ ആവർത്തിച്ചുള്ള പ്രക്രിയകൾ ഓട്ടോമേറ്റ് ചെയ്യുന്നതിനും ഓപ്പറേറ്റിംഗ് സിസ്റ്റം കമാൻഡുകളിൽ നിന്ന് കമാൻഡുകൾ സൃഷ്ടിക്കുന്നതിനും അനുവദിക്കുന്നു. ഈ ലേഖനത്തിൽ ഞങ്ങൾ അവലോകനം ചെയ്യും ബാഷ് ഫംഗ്ഷനുകൾ എങ്ങനെ ഉപയോഗിക്കാം. എങ്ങനെയെന്ന് ലേഖനം വായിക്കാൻ ഞാൻ ശുപാർശ ചെയ്യുന്നു ബാഷ് ഉപയോഗിച്ച് നിങ്ങളുടെ സ്വന്തം സ്ക്രിപ്റ്റുകൾ സൃഷ്ടിക്കുക.

ഞങ്ങൾ നിർദ്ദേശിക്കുന്ന സ്ക്രിപ്റ്റിൽ, ഒരു ഫയലിന്റെ പേര് അറിയുന്നതിനായി ഞങ്ങൾ ബാഷ് ഭാഷ ഉപയോഗിക്കുന്നു. ഇതിനായി ഞങ്ങൾ ഉപയോഗിക്കും കമാൻഡ് കണ്ടെത്തുക എന്നാൽ പറഞ്ഞ സ്ക്രിപ്റ്റിൽ മുമ്പ് നിർവചിച്ച ഫംഗ്ഷനുകളുടെ സഹായത്തോടെ. എല്ലാ ഭാഷകളിലും ഇല്ലാത്ത ബാഷിന്റെ പ്രത്യേകതയോ പരിമിതിയോ നിങ്ങൾ കണക്കിലെടുക്കണം: ഒരു ഫംഗ്ഷനെ വിളിക്കാൻ അത് നിർവചിക്കേണ്ടതുണ്ട് മുമ്പ്.

പ്രവർത്തനങ്ങൾ നിർവചിക്കുക

ഫംഗ്ഷനുകൾ നിർവചിക്കാൻ രണ്ട് വഴികളുണ്ട്: ഫംഗ്ഷൻ പ്രഖ്യാപനത്തോടുകൂടിയോ അല്ലാതെയോ:

function nombre_funcion () 
{
    # codigo
}

അല്ലെങ്കിൽ ഇത് മറ്റൊന്ന്, നിങ്ങൾ പിന്നീട് കാണുന്നത് പോലെ ഞാൻ ഉപയോഗിക്കുന്നു.

nombre_funcion ()
{
    # codigo
}

കൂടാതെ പാരാമീറ്ററുകൾ‌ നൽ‌കുന്നതിനും ഫലങ്ങൾ‌ നൽ‌കുന്നതിനും ഒരു രീതി ബാഷ് നൽകുന്നു. ഭാവി ലേഖനങ്ങളിൽ ഞങ്ങൾ കാണും.

#!/usr/bin/env bash

# ~/.bin/encontrar
# encuentra archivos a partir de la descripción de su nombre en un directorio específico
#
# Por Pedro Ruiz Hidalgo
# version 1.0.0
# Copyright © enero 2017
#
#

EXIT_OK=0
EXIT_BAD=66

PATRON=$1
DIRECTORIO=$2

autor ()
{
 echo -e "\nPedro Ruiz Hidalgo @petrorum. Copyright © 2017\n"
}

ayuda ()
{
 echo -e "\nencontrar [PATRON] [DIRECTORIO]\n"
} 

noparams ()
{
 echo -e "\nSon necesarios dos parámetros\nencontrar -h para ayuda\n"
 read -p "¿Quieres ver la ayuda? (S|s)" -n 1 -r
 if [[ $REPLY =~ ^[Ss]$ ]];
    then
       echo ""
       ayuda
 fi
}

nodir ()
{
 echo -e "\nDirectorio no Existe\n"
}

if [[ $PATRON == "-h" ]];
then 
 ayuda
 exit $EXIT_OK
fi

if [[ $PATRON == "-a" ]];
then 
 autor
 exit $EXIT_OK
fi

if [ $# -lt 2 ];
then
 noparams
else
 if [ -d $DIRECTORIO ];
 then
 echo ""
 find $DIRECTORIO -name $PATRON*
 echo ""
 exit $?
 else 
 nodir 
 exit EXIT_BAD
 fi
fi


സ്ക്രിപ്റ്റ് വിശകലനം

നിർവചനങ്ങൾ

ബാഷിനായി വിജയകരമായി പൂർത്തിയാക്കിയ ഓരോ പ്രക്രിയയ്ക്കും "0" കോഡ് ഒരു സിഗ്നലായിരിക്കണം. കൈകാര്യം ചെയ്ത പിശക് കോഡുകൾ 12, 13 വരികൾ നിർവചിക്കുന്നു വിജയത്തിനായി EXIT_OK y പരാജയപ്പെടുമ്പോൾ പുറത്തുകടക്കാൻ EXIT_BAD.

15, 16 വരികളിൽ, സ്ക്രിപ്റ്റിന്റെ പേരിന് ശേഷം കമാൻഡ് ലൈനിൽ ദൃശ്യമാകുന്ന ആദ്യ ($ 1), രണ്ടാമത്തെ ($ 2) പാരാമീറ്ററുകൾ പാറ്റേൺ, ഡയറക്ടറി വേരിയബിളുകൾക്ക് നൽകിയിട്ടുണ്ട്, കാരണം ഞങ്ങൾ അത് എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ പിന്നീട് കാണും.

എസ് വരി 18 ഞങ്ങൾ ഞങ്ങളുടെ ആദ്യ പ്രവർത്തനം സൃഷ്ടിക്കുന്നു. «Author called എന്ന് വിളിക്കുന്ന ഫംഗ്ഷൻ പ്രദർശിപ്പിക്കുന്നു സ്ക്രിപ്റ്റ് കർത്തൃത്വം 50 ~ 54 വരികളിലുള്ളത് പോലെ നിങ്ങൾക്ക് "-a" ആർഗ്യുമെൻറ് ഉപയോഗിച്ച് വിളിക്കുമ്പോൾ. വാദം "-ഒപ്പം" 23-ാം വരിയിൽ നിന്ന് «\ N enc എൻ‌കോഡുചെയ്യുന്നതിലൂടെ« അടുത്ത വരിയുടെ sequ ക്രമം കാണിക്കാൻ അനുവദിക്കുന്നു..

പാരാമീറ്ററുകളില്ലാതെ സ്ക്രിപ്റ്റ് വിളിക്കുമ്പോൾ ഉണ്ടാകേണ്ട ഇവന്റുകൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള ചുമതല നോപറാമുകളിലേക്കുള്ള കോൾ (വരികൾ 28 ~ 37) ആണ്. പുതിയ ലൈൻ കോഡുകൾക്കിടയിൽ ശരിയായി ഉൾപ്പെടുത്തിയിരിക്കുന്നതായി ഞങ്ങൾ കാണിക്കുന്നു, രണ്ട് പാരാമീറ്ററുകൾ ഉപയോഗിച്ച് സ്ക്രിപ്റ്റ് എക്സിക്യൂട്ട് ചെയ്യണമെന്ന് സൂചിപ്പിക്കുന്ന ഒരു സന്ദേശം, തുടർന്ന് ഒരു ഓപ്ഷൻ (ലൈൻ 31) ഉപയോഗിക്കാൻ കാണിക്കുന്നു വായിക്കുക നിങ്ങൾക്ക് സഹായം കാണിക്കണമെങ്കിൽ "എസ്" അല്ലെങ്കിൽ "എസ്" അമർത്താൻ ഇത് ആവശ്യപ്പെടുന്നു. 32-ാം വരിയിൽ ഞങ്ങൾ അക്ഷരാർത്ഥത്തിൽ പറയുന്നു: 'ഉത്തരം (വേരിയബിളിൽ ഞങ്ങൾക്ക് വന്നാൽ $ മറുപടി നൽകുക) വലിയക്ഷരമോ ചെറിയക്ഷരമോ ആയ ഏതെങ്കിലും പ്രതീകങ്ങൾ ഉൾക്കൊള്ളുന്നു, തുടർന്ന് (വരി 33) ഒരു ശൂന്യമായ വരി (വരി 34) കാണിക്കുകയും സഹായ പ്രവർത്തനം നിർവ്വഹിക്കുകയും ചെയ്യുന്നു (വരികൾ 23 ~ 26).

തിരയൽ‌ ശ്രമിക്കുന്ന ഡയറക്‌ടറി നിലവിലില്ലെന്ന് ഞങ്ങൾ‌ കണ്ടെത്തുമ്പോൾ‌ നോഡിർ‌ ഫംഗ്ഷൻ‌ (39 ~ 42 വരികൾ‌) നടപ്പിലാക്കും.

പ്രവർത്തനം

ഇതുപയോഗിച്ച് ഞങ്ങൾക്ക് ഇതിനകം ഉണ്ട് ആവശ്യമായ എല്ലാ പ്രവർത്തനങ്ങളും നിർവചിച്ചിരിക്കുന്നു ഞങ്ങളുടെ പ്രോഗ്രാം എക്സിക്യൂട്ട് ചെയ്യുന്നതിന്, യഥാർത്ഥത്തിൽ 44-ാം വരിയിൽ ആരംഭിക്കുന്നു, സ്ക്രിപ്റ്റിന് ലഭിക്കുന്ന പാരാമീറ്ററുകളിൽ ആദ്യത്തേത് "-h" ആണോയെന്ന് പരിശോധിക്കുന്നു, അത് ശരിയാണെങ്കിൽ, സഹായ പ്രവർത്തനം നടപ്പിലാക്കുക സാധാരണ അവസാനിപ്പിക്കുന്നതിനെ സൂചിപ്പിക്കുന്ന എക്സിറ്റുകൾ.

PATTERN (15-ാം വരിയിൽ വിവരിച്ചിരിക്കുന്ന ആദ്യത്തെ പാരാമീറ്റർ) "-a" ആണെങ്കിൽ, "-h" ഓപ്ഷനായി മുമ്പത്തെ ഖണ്ഡികയിൽ വിശദീകരിച്ച അതേ സംവിധാനം പിന്തുടർന്ന് രചയിതാവ് പ്രദർശിപ്പിക്കും.

ലൈനിൽ 56 ഞങ്ങൾക്ക് രണ്ട് പാരാമീറ്ററുകളിൽ താഴെ ലഭിച്ചിട്ടില്ലെന്ന് നിയന്ത്രിക്കപ്പെടുന്നുഈ സാഹചര്യത്തിൽ, നോപാറംസ് ഫംഗ്ഷൻ എക്സിക്യൂട്ട് ചെയ്യപ്പെടുന്നു, തുടർന്ന്, 60-ാം വരിയിൽ നമ്മൾ കണ്ടെത്തുന്നു ഞങ്ങൾ‌ തിരയാൻ‌ താൽ‌പ്പര്യപ്പെടുന്ന ഡയറക്‌ടറി നിലവിലുണ്ടെങ്കിൽ‌, അത് നിലവിലുണ്ടെങ്കിൽ, ഒരു ശൂന്യമായ വരി കാണിക്കുന്നു ,. കമാൻഡ് കണ്ടെത്തുക ഞങ്ങൾ‌ തിരയൽ‌ നടത്താൻ‌ താൽ‌പ്പര്യപ്പെടുന്ന ഡയറക്‌ടറിയുടെ വിലാസത്തിനൊപ്പം പാറ്റേൺ‌ (ഞങ്ങൾ‌ തിരയുന്ന ഫയലിൻറെ പേരിന്റെ ആരംഭം) ഒരു പുതിയ ശൂന്യ ലൈനും ഉപയോഗവും എക്സിറ്റ് $? കണ്ടെത്തൽ ഫലത്തിൽ ഞങ്ങളുടെ സ്ക്രിപ്റ്റിന്റെ output ട്ട്‌പുട്ട് ഞങ്ങൾ ഏൽപ്പിക്കുന്നു. സാഹചര്യത്തിൽ ഡയറക്ടറി അസ്തിത്വം തെറ്റാണ് (വരി 67) നോഡിർ ഫംഗ്ഷനിലേക്ക് ഞങ്ങൾ ഒരു കോൾ ചെയ്യുന്നു അസാധാരണമായ അവസാനിപ്പിക്കൽ സൂചിപ്പിച്ച് ഞങ്ങൾ പുറത്തുകടക്കുന്നു.

വധശിക്ഷയും പരിശോധനയും

$ encontrar
$ encontrar -a
$ encontrar -h
$ encontrar index aljflaskjf #directorio no existe
$ encontrar index public_html
$

En ബാഷിനെക്കുറിച്ചുള്ള ലേഖനങ്ങൾ ഇതിനുള്ള സംവിധാനങ്ങൾ ഞങ്ങൾ കാണും ഫംഗ്ഷനുകളിൽ പാരാമീറ്ററുകൾ ഉപയോഗിക്കുകഎങ്ങനെ ചെയ്യാമെന്നും ഞങ്ങൾ കാണും റിട്ടേൺ ഡാറ്റ വ്യക്തമാക്കുക അതിൽ നിന്ന്.

ഈ പോസ്റ്റ് നിങ്ങൾക്ക് ഉപയോഗപ്രദമായി എന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു.


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

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

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

നിങ്ങളുടെ ഇമെയിൽ വിലാസം പ്രസിദ്ധീകരിച്ചു ചെയ്യില്ല. ആവശ്യമായ ഫീൽഡുകൾ കൊണ്ട് അടയാളപ്പെടുത്തുന്നു *

*

*

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

  1.   ജോസിയ പറഞ്ഞു

    ഹലോ,
    വളരെ രസകരവും വളരെ വ്യക്തവുമാണ്.
    ഒരു കുറിപ്പ്; EXIT_BAD വേരിയബിളിന് മുന്നിലുള്ള 68 വരിയിൽ a missing കാണുന്നില്ല.
    നിങ്ങളുടെ ലേഖനങ്ങൾ ഉപയോഗിച്ച് ഞാൻ തുടർന്നും പഠിക്കുന്നത് തുടരും.