ይህንን በዩኒክስ 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 ስለ ባሽ መጣጥፎችን መከተል ስልቶችን እናያለን በተግባሮች ውስጥ መለኪያዎችን ይጠቀሙእንዲሁም እንዴት እናያለን የመልሶ መረጃን በግልጽ ይግለጹ ከተመሳሳይ.
ይህ ልጥፍ ለእርስዎ ጠቃሚ እንደነበረ ተስፋ እና ተስፋ አደርጋለሁ ፡፡
አስተያየት ፣ ያንተው
; ሠላም
በጣም አስደሳች እና በጣም ግልጽ።
ማስታወሻ ብቻ; ከተለዋጭው EXIT_BAD ፊት ለፊት ባለው መስመር 68 ላይ አንድ $ ጠፍቷል።
ከእርስዎ ጽሑፎች ጋር በእርግጠኝነት መማሬን እቀጥላለሁ ፡፡