ጥቁር-ስክሪፕት ላይ ያሉ ክርክሮችን እንዴት ማለፍ እንደሚቻል

ትዕዛዞች, አገባብ እና ምሳሌዎች

ስክሪፕቱ ከትዕዛዝ መስመሩ በሚጠራበት ጊዜ የተገለጸውን ነጋሪ እሴቶችን እንደሚቀበለው የቢሽ ስክሪፕት መጻፍ ይችላሉ. ይህ ዘዴ የግቤት ግቤቶች (ግጥሞቹ) እሴታዎች ላይ ተመስርቶ ስክሪፕት ትንሽ ለየት ያለ ተግባር ማከናወን ሲኖርበት ያገለግላል.

ለምሳሌ, ፋይሎችን እንደ መቁጠር የመሳሰሉ ፋይሎችን የሚሠራ አንድ ስክሪፕት "stats.sh" የሚል ስክሪፕት ሊኖርህ ይችላል. በዛ ብዙ ፋይሎች ላይ ያንን ስክሪፕት መጠቀም ከፈለጉ የፋይል ስም እንደ ነጋሪ እሴት መተላለፍ ይመረጣል, ስለዚህ ሁሉም ፋይሎች እንዲሰሩ ለተመሳሳይ ስክሪፕት መጠቀም ይችላሉ. ለምሳሌ, የሂደቱ ስም «የዘፈን ዝርዝር» ከሆነ, የሚከተለው የትርጉም መስመር ያስገባል:

sh stats.sh የዘፈን ዝርዝር

ነጋሪ እሴቶችን $ 1, $ 2, $ 3, ወዘተ በመጠቀም $ 1 ለዋናው መከራከሪያ, $ 2 ለሁለተኛው ክርክር እና ወዘተ. ይህ በሚከተለው ምሳሌ ውስጥ ተገልጿል.

FILE1 = $ 1 wc $ FILE1

ለተነባቢነት, ከመጀመሪያው ነጋሪ እሴት ($ 1) ጋር ተለዋዋጭ ስምን ተለዋዋጭ መድብ, እና በዚህ ተለዋዋጭ (ዪ $ FILE1) ላይ የቃላት ብዛት ቆጣቢ (ዋቢ) ስልክ ጥራ.

ተለዋዋጭ ነጋሪ እሴቶች አሉዎት, የሁሉም የግብዓት መለኪያዎች ስብስብ የሆነ የ "$ @" ተለዋዋጭን መጠቀም ይችላሉ. ይህ ማለት እያንዲንደ በዴይሌ ማመሌከቻ ሇእያንዲንደ የማስፇጸም ሂዯት መጠቀም ይችሊሌ.

ለ FILE1 በ "$ @" ውስጥ wc $ FILE1 ተከናውኗል

ስክሪፕቱን ከዚህ ትዕዛዝ መስመር እንዴት እንደሚጠሉት የሚያሳይ ምሳሌ ይኸውና:

sh stats.sh songlist1 songlist2 songlist3

ክርክር ባዶ ከሆነ, በነጠላ ጥቅሶች ማያያዝ አለበት. ለምሳሌ:

sh stats.sh 'የመዝሙር ዝርዝር 1' 'የጨዋታ ዝርዝር 2' 'የዘፈን ዝርዝር 3'

ብዙውን ጊዜ ስክሪፕት የተፃፈ ሲሆን ተጠቃሚው በማናቸውም ትዕዛዞች ውስጥ ባንዲራዎችን በመጠቀም ክርክሮችን ማለፍ ይችላል. በነባር ሰንደቅ ዘዴ አማካኝነት, አንዳንድ ግቤቶችን አስገዳጅ ማድረግ ይችላሉ.

እንደ "የተጠቃሚ ስም", "ቀን" እና "ምርት" የመሳሰሉ የተለዩ መለኪያዎች ላይ ተመርኩዞ መረጃን ከያዘ የውሂብ ጎታ ላይ መረጃን የሚያገኝ ስክሪፕት አለዎት, እና በተጠቀሰው "ቅርጸት" ሪፓርት ያዘጋጃል. አሁን ስክሪፕት በሚጠራበት ጊዜ በእነዚህ ልኬቶች ውስጥ ማለፍ እንድትችል ስክሪፕትህን መጻፍ ትፈልጋለህ. ምናልባት እንዲህ ሊመስል ይችላል:

makereport -u jsmith -p notebooks-d 10-20-2011 -f pdf

Bash ይሄንን ተግባር ከ "getopts" ተግባር ጋር ያነቃል. ከላይ ለተጠቀሰው ምሳሌ, getopts ን እንደሚከተለው መጠቀም ይችላሉ:

ይህ የ "getopts" ተግባር እና "መርሃግብር" የሚባለውን, በ "u: d: p: f:" በዚህ ውስጥ በመጠቀም, በአለመግባባት ውስጥ ይግባባል. የዜና-አዙሮው ነጋሪ እሴቶችን ለማለፍ ጥቅም ላይ ሊውሉ የሚችሉትን ባንዲራዎች በኦፕር-ኦፕቲንግ ውስጥ ይራመዳል, እና ለተለዋዋጭ "አማራጭ" የቀረበው የክርክሩን ዋጋ ይመድባል. የጉዳዩ መግለጫ በመቀጠል የተለዋዋጭ "አማራጭ" እሴትን ሁሉም ነጋሪ እሴታዎች ከተነበቡ በኋላ ጥቅም ላይ ሊውል በሚችል አለም አቀፋዊ ተለዋዋጭ መተካት ነው.

በኤክስቲንግ ሲቲ ውስጥ ያሉት ኮንዲሽኖች ትርጉም ላላቸው ባንዲራዎች የሚያስፈልጉት ዋጋዎች ናቸው. ከላይ በተሰጠው ምሳሌ ሁሉም ባንዲራዎች በቅንፍ ተከተሏቸው "u: d: p: f:". ይህ ማለት ሁሉም ባንዲራዎች እሴት ያስፈልገዋል. ለምሳሌ, ለምሳሌ "d" እና "f" ባንዲራዎች እሴት እንዳላቸው አይጠበቁም, የኤትራፕቲንግ መሰሎቹ "u: dp: f" ናቸው.

በ "ፐርሰንት" መጀመሪያ ላይ አንድ ቁንጽል, ለምሳሌ "u: d: p: f:", ፍጹም የተለየ ትርጉም አለው. በኦንስትራክሽን ውስጥ ያልተወከሉ ባንዲዎችን ​​እንዲይዙ ያስችልዎታል. በዚህ ሁኔታ "አማራጭ" ተለዋዋጭ እሴት «?» ተዘጋጅቷል. እና "OPTARG" ዋጋ ወደ ያልተጠበቀ ዕልባት ተዘጋጅቷል. ይህ ስህተት ለተጠቃሚው የሚረዱ ተገቢ የስህተት መልዕክት እንዲያሳዩ ያስችልዎታል.

በባንዲራ ምልክት ያልተደረገባቸው ሙግቶች በ getopts ችላ ይባላሉ. በስክሪፕት ውስጥ የተገለጹ ባንዲራዎች ስዕሉ ከተጠሩ በኋላ አይሰጡም, ይህን ጉዳይ በተለይም በቁርዎ ውስጥ ካልያዙ በስተቀር ምንም ነገር አይከሰትም. በ getops የማይስተናገዱ ማንኛቸውም ነጋሪ እሴቶች አሁንም በመደበኛ $ 1, $ 2, ወዘተ ... ሊወሰዱ ይችላሉ.