බෂ්-ස්ක්රිප්ට් සඳහා තර්ක ඉදිරිපත් කිරීම

විධාන, රීති සහ උදාහරණ

ඔබට කේත රචනය ඇමතීමේදී නියම කරන ලද විචල්යයන් බහ් සාදකයක් ලිවිය හැකිය. මෙම ක්රමයේදී ස්ක්රිප්ට් පරාමිතීන්ගේ අගයන් මත පදනම්ව තරමක් වෙනස් කාර්යයක් සිදු කළ යුතු වේ.

නිදසුනක් ලෙස, ඔබට "stats.sh" යනුවෙන් හැඳින්වෙන කේත රචනයක් තිබිය හැක, එහි වචන ගණනය කිරීම වැනි ගොනුවක් මත විශේෂිත මෙහෙයුමක් සිදු කරයි. බොහෝ ගොනු මත එම කේත රචනය භාවිතා කිරීමට ඔබට අවශ්ය නම්, තර්කයක් ලෙස ගොනු නාමය අනුමත කිරීම වඩාත් සුදුසුය, එබැවින් ඔබට සකසන සියලු ගොනු සඳහා එකම කේත රචනය භාවිතා කළ හැකිය. නිදසුනක් ලෙස, සැකසූ ගොනුවෙහි නම වන්නේ "songlist" නම්, ඔබ පහත විධාන පේළිය ඇතුල් කරනු ඇත:

sh stats.sh songlist

විචල්යයන්, විචල්යයන් $ 1, $ 2, $ 3, ආදිය භාවිතා කරමින් විධානාවලිය වෙත පිවිසෙන අතර, $ 1 පළමු තර්කය වෙත යොමු කරයි, දෙවන තර්කය දෙවනුව, සහ වෙනත් ය. පහත උදාහරණයේ මෙය දැක්වේ.

FILE1 = $ 1 wc $ FILE1

කියවීමේ හැකියාව සඳහා, පළමු විචල්යයේ අගය (1 $) සඳහා විස්තරාත්මක නමක් සහිත විචල්යයක් ලබා දෙන්න, පසුව මෙම විචල්යයේ ( wc ) යන වචනයේ සංඛ්යාත්මක අගය ($ FILE1) මත අමතන්න.

ඔබට විචල්ය සංඛ්යාවක විචල්ය සංඛ්යාවක් තිබේ නම්, ඔබට "$ @" විචල්යය භාවිතා කල හැක, සියලු ආදාන පරාමිතීන් සමූහයකි. මෙයින් අදහස් කරන්නේ පහත දැක්වෙන උදාහරණයෙන් දැක්වෙන ආකාරයට, ඒවා එකිනෙකට ප්රතික්රියා කිරීම සඳහා ,

FILE1 සඳහා "$ @" wc $ FILE1 කරන්න

විධාන රේඛාවේ සිට මෙම විචල්යය තර්ක කිරීම සඳහා මෙය උදාහරණයක් ලෙස දැක්වේ:

sh stats.sh songlist1 songlist2 songlist3

විචල්යක් හිස් අවකාශයක් තිබේ නම්, ඔබ එය තනි වාක්යයන් සමඟ එවා තිබිය යුතුය. උදාහරණයක් වශයෙන්:

sh stats.sh 'songlist 1' 'songlist 2' 'songlist 3'

නිතරම වාක්යයක් ලියනු ලබන්නේ පරිශීලකයාට කොඩියේ භාවිතා කළ හැකි ඕනෑම අනුපිළිවෙලක් තුල තර්ක ඉදිරිපත් කළ හැකි ය. Flags ක්රමය සමඟ, ඔබට ඇතැම් විකල්පයන් විකල්පයක් කළ හැකිය.

නිශ්චිත පරාමිතීන් මත පදනම්ව දත්ත සමුදායෙන් තොරතුරු ලබාගෙන ඇති ස්ක්රිප්ට් එකක් ඔබට කියමි, "පරිශීලක නාමය", "දිනය" සහ "භාණ්ඩය", සහ නිශ්චිත "ආකෘතියක" වාර්තාවක් ජනනය කරයි. ඔබට තිර රචනය කැඳවන විට ඔබට මෙම පරාමිතීන් සමත් විය හැකිය. එය මෙවැන්නක් විය හැකිය:

මැමේරිස්ට් - ජස්මිත්-පී නෝට්බුක්ස් -d 10-20-2011 -f pdf

Bash මෙම ක්රියාකාරීත්වය "getopts" ශ්රිතය සමඟ සක්රීය කරයි. ඉහත උදාහරණ සඳහා, ඔබ පහත පරිදි භාවිතා කළ හැක:

මෙය "goopts" ශ්රිතය සහ ඊනියා "optstring" භාවිතා කරන අතරතුර, "u: d: p: f:" නම් මෙම තර්කය තුල තර්ක මඟින් යථාර්තයක් බවට පත් වේ. තර්ක ඉදිරිපත් කිරීම සඳහා භාවිතා කල හැකි ධජ අඩංගු වන අතර, එම ධජය විචල්යය "විකල්පය" සඳහා ලබා දෙන තර්කයේ අගයන් නියම කර ඇත. ඉන්පසු ප්රකාශයේ ඇති සියලු විචල්යයන් පසුව කියවිය හැකි ගෝලීය විචල්යයකට "විචල්යයේ" විකල්පය "අගය" අගය ලබා දෙයි.

දෘෂ්ය වෙළඳ ප්රවර්ධකයන් හා සම්බන්ධ වීමට මා කැමති නැත. ඉහත උදාහරණයේ සියලු ධජයන් විසින් කෝලනයක් අනුගමනය කරනු ඇත: "u: d: p: f:". මෙයින් අදහස් කරන්නේ, සියලු ධජයන් සඳහා වටිනාකම් අවශ්ය ය. නිදසුනක් ලෙස, "d" සහ "f" ධජ වල වටිනාකමක් අපේක්ෂා නොකෙරේ නම්, optstring "u: dp: f" වනු ඇත.

නිදසුනක් ලෙස: "u: d: p: f:", දෘෂ්යාබාධයේ මුලදී කෝලනයක්, සම්පූර්ණයෙන්ම වෙනස් අර්ථයක් ඇත. දෘෂ්ය වෙළඳ ප්රවර්ධකයන් හා සම්බන්ධ වීමට මා කැමති නැත. එම අවස්ථාවෙහිදී "විකල්පය" විචලනය "?" සහ "OPTARG" වල අගය අනපේක්ෂිත ධජයට සකසා ඇත. මෙම වැරදිකරුවකුට දැනුම් දීම සඳහා සුදුසු දෝෂ සහිත පණිවිඩයක් පෙන්වීමට ඔබට ඉඩ සලසයි.

ධජයක් මගින් පෙර නොපැමිණෙන තර්කයන් ගවොෆ්ට් විසින් නොසලකා හරිනු ඇත. තිර රචනය තුල නියම කරන ලද ධජයන්, තිර රචනය කැඳවන විට ලබා දී නොමැති නම්, ඔබ ඔබේ කේතයෙහි විශේෂයෙන් මෙම නඩුව හැසිරවීමට හැර වෙන කිසිවක් සිදු නොවේ. Getops මඟින් හැසිරවිය නොහැකි තර්ක සාමාන්යයෙන් $ 1, $ 2, itd විචල්යයන් සමඟ අල්ලා ගත හැකිය.