ተግባሮችን በባሽ ውስጥ እንዴት እንደሚጠቀሙ

ይህንን በዩኒክስ shellል ላይ የተመሠረተ ፣ POSIX ን የሚያከብር የኮምፒተር ቋንቋን በመጠቀም በባሽ ውስጥ ተግባሮችን እንዴት እንደሚጠቀሙ። እንደ አንድ ቋንቋ ተግባሩ የሊነክስ ትዕዛዞችን መተርጎም ሲሆን ይህም ተደጋጋሚ ሂደቶቻችንን በራስ ሰር እንድንሠራ እና እንዲሁም ከስርዓተ ክወና ትዕዛዞች ትዕዛዞችን እንድንፈጥር ያስችለናል ፡፡ በዚህ ጽሑፍ ውስጥ እንገመግማለን ተግባሮችን በባሽ ውስጥ እንዴት እንደሚጠቀሙ. ጽሑፉን እንዴት እንዲያነቡ እመክራለሁ ባሽ በመጠቀም የራስዎን ስክሪፕቶች ይፍጠሩ.

ባቀረብነው ስክሪፕት ውስጥ ስሙን እያወቅን ፋይል ለመፈለግ የባሽ ቋንቋን እንጠቀማለን ፡፡ ለዚህም እኛ እንጠቀማለን ትዕዛዝ ያግኙ ነገር ግን በተጠቀሰው ጽሑፍ ውስጥ ቀደም ሲል በተገለጹት ተግባራት እገዛ ፡፡ በሁሉም ቋንቋዎች የማይገኝ የባሽ ልዩነትን ወይም ውስንነትን ከግምት ማስገባት አለብዎት- ተግባርን ለመጥራት መተርጎም አለበት በፊት.

ተግባሮችን ይግለጹ

ተግባሮችን ለመግለፅ ሁለት መንገዶች አሉ-በተግባራዊ መግለጫው ወይም ያለሱ ፡፡

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 ላይ የ ‹PATTERN ›እና“ DIRECTORY ”ተለዋዋጮች ከስክሪፕቱ ስም በኋላ በትእዛዝ መስመሩ ላይ የሚታዩ የመጀመሪያ ($ 1) እና ሁለተኛ ($ 2) መለኪያዎች ተመድበዋል ፡፡

መስመር 18 የመጀመሪያውን ተግባራችንን እንፈጥራለን. «ደራሲ» የተባለ ተግባር ያሳያል የስክሪፕት ደራሲነት በመስመሮች 50 ~ 54 ላይ ከሆነ እንደሚመለከቱት በ “-a” ክርክር ስንጠራው ፡፡ ክርክሩ "እና" ከ መስመር 23 «\ n» ን በመመዝገብ የ «ቀጣዩ መስመር» ቅደም ተከተል ለማሳየት ያስችለዋል.

ወደ noparams (መስመሮች 28 ~ 37) ጥሪ ያለ ስክሪፕቱ ያለ ምንም ልኬት ሲጠራ የሚከሰቱትን ክስተቶች ለማስተናገድ ኃላፊነት አለበት ፡፡ በአዲሱ የመስመር ኮዶች መካከል በትክክል ተዘግተን እናሳያለን ፣ ስክሪፕቱ በሁለት መለኪያዎች መከናወን እንዳለበት የሚያመለክት መልእክት ፣ ከዚያ አንድ አማራጭ (መስመር 31) ጥቅም ላይ እንደሚውል ያሳያል ያንብቡ እገዛን ለማሳየት ከፈለጉ “S” ወይም “s” ን እንዲጫኑ ይጠይቅዎታል ፡፡ በመስመር 32 ውስጥ በትክክል ቃል በቃል እንናገራለን ‹መልሱ (በተለዋጭው ውስጥ ወደ እኛ የሚመጣ ከሆነ) $ መልስ) የ “አቢይ” ወይም “ትንሽ” ፊደላትን ማንኛውንም ይይዛል ፣ ከዚያ (መስመር 33) ባዶ መስመርን ያሳያል (መስመር 34) እና የእገዛ ተግባሩን ይፈጽማል (መስመሮች 23 ~ 26)።

ፍለጋው የሚሞከርበት ማውጫ እንደሌለ ስናውቅ የኖዲር ተግባር (መስመሮች 39 ~ 42) ይከናወናል ፡፡

ተግባር

በዚህ ቀድሞውኑ አለን ሁሉንም አስፈላጊ ተግባራት ገልጧል በእውነቱ በመስመር 44 ላይ የሚጀምረውን ፕሮግራማችንን ለማስፈፀም ፣ ስክሪፕቱ ከሚቀበላቸው መለኪያዎች ውስጥ የመጀመሪያው “-h” መሆኑን በማጣራት ፣ እውነት ከሆነ ፣ የእርዳታ ተግባሩን ያከናውኑ እና መደበኛውን መቋረጥ የሚያመለክቱ መውጫዎች.

ፓተርን (በመስመር 15 ላይ እንደተገለጸው የመጀመሪያ ልኬት) “-a” ከሆነ ደራሲው ለ “-h” አማራጭ በቀደመው አንቀፅ የተብራራውን ተመሳሳይ ዘዴ ተከትሎ ይታያል ፡፡

በመስመሩ ላይ 56 ከሁለት መለኪያዎች ያላገኘነው ቁጥጥር ይደረግበታልበዚህ ሁኔታ ፣ የኖራፓሱ ተግባር ይፈጸማል ፣ ከዚያ በመስመር 60 ላይ ከሆነ እኛ እናገኛለን ፍለጋውን ለማድረግ የምንፈልግበት ማውጫ ካለ፣ ካለ ባዶ መስመር ይታያል ፣ የ ትዕዛዝ ያግኙ ፍለጋውን ለማከናወን በምንፈልግበት ማውጫ አድራሻ (ንድፍ) ተከትለን (የምንፈልገው ፋይል ስም መጀመሪያ) አዲስ ባዶ መስመር እና በመጠቀም መውጣት $? የስክሪፕታችንን ውጤት በ Find ለተገኘው ውጤት አደራ እንላለን ፡፡ ሁኔታው ቢከሰት ማውጫ መኖር ሐሰት ነው (መስመር 67) ለ nodir ተግባር ጥሪ እናደርጋለን እና ያልተለመደ መቋረጥን የሚያመለክት እንወጣለን.

አፈፃፀም እና ሙከራ

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

En ስለ ባሽ መጣጥፎችን መከተል ስልቶችን እናያለን በተግባሮች ውስጥ መለኪያዎችን ይጠቀሙእንዲሁም እንዴት እናያለን የመልሶ መረጃን በግልጽ ይግለጹ ከተመሳሳይ.

ይህ ልጥፍ ለእርስዎ ጠቃሚ እንደነበረ ተስፋ እና ተስፋ አደርጋለሁ ፡፡


የጽሑፉ ይዘት የእኛን መርሆዎች ያከብራል የአርትዖት ሥነ ምግባር. የስህተት ጠቅ ለማድረግ እዚህ.

አስተያየት ፣ ያንተው

አስተያየትዎን ይተው

የእርስዎ ኢሜይል አድራሻ ሊታተም አይችልም. የሚያስፈልጉ መስኮች ጋር ምልክት ይደረግባቸዋል *

*

*

  1. ለመረጃው ኃላፊነት ያለው: ሚጌል Áንጌል ጋቶን
  2. የመረጃው ዓላማ-ቁጥጥር SPAM ፣ የአስተያየት አስተዳደር ፡፡
  3. ህጋዊነት-የእርስዎ ፈቃድ
  4. የመረጃው ግንኙነት-መረጃው በሕጋዊ ግዴታ ካልሆነ በስተቀር ለሶስተኛ ወገኖች አይተላለፍም ፡፡
  5. የውሂብ ማከማቻ በኦክሴንትስ አውታረመረቦች (አውሮፓ) የተስተናገደ የውሂብ ጎታ
  6. መብቶች-በማንኛውም ጊዜ መረጃዎን መገደብ ፣ መልሰው ማግኘት እና መሰረዝ ይችላሉ ፡፡

  1.   ጆይሰን አለ

    ; ሠላም
    በጣም አስደሳች እና በጣም ግልጽ።
    ማስታወሻ ብቻ; ከተለዋጭው EXIT_BAD ፊት ለፊት ባለው መስመር 68 ላይ አንድ $ ጠፍቷል።
    ከእርስዎ ጽሑፎች ጋር በእርግጠኝነት መማሬን እቀጥላለሁ ፡፡