Ինչպես անցնել փաստարկներ բաշ-սց

Հրամաններ, շարահյուսություն եւ օրինակներ

Դուք կարող եք գրել bash- ի սցենար , որում ստանում է փաստարկներ, երբ սցենարը հրամանի տողից կոչվում է: Այս մեթոդը օգտագործվում է, երբ սցենարը պետք է կատարի մի փոքր այլ գործառույթ, կախված մուտքային պարամետրերի արժեքներից (փաստարկները):

Օրինակ, դուք կարող եք ունենալ «stats.sh» սցենար, որը ֆայլի վրա կատարում է որոշակի գործողություն, ինչպես օրինակ, հաշվելով նրա բառերը: Եթե ​​ցանկանում եք իմանալ այդ սցենարը բազմաթիվ ֆայլերի վրա, ապա լավագույնն այն է, որ ֆայլի անունը փոխանցվի որպես փաստարկ, այնպես որ դուք կարող եք օգտագործել նույն սցենարը բոլոր ֆայլերի համար մշակելու համար: Օրինակ, եթե ֆայլի անունը մշակվի, «երգացանկ» է, մուտքագրեք հետեւյալ հրամանի տողը.

sh stats.sh երգացանկը

Արժեթղթերը մուտքագրվում են սցենարի ներսում, օգտագործելով $ 1, $ 2, $ 3 եւ այլն փոփոխականներ, որտեղ $ 1- ը վերաբերում է առաջին փաստարկին, $ 2 երկրորդ փաստարկին եւ այլն: Սա պատկերված է հետեւյալ օրինակով.

FILE1 = $ 1 wc $ FILE1

Readability- ի համար նշանակեք փոփոխական նկարագրության անունով առաջին փաստարկի արժեքը ($ 1), ապա կոչեք այս փոփոխականի վրա ($ FILE1) բառի հաշվարկի օգտակար ( wc ):

Եթե ​​ունեք փոփոխական թվով փաստարկներ, կարող եք օգտագործել «$ @» փոփոխական, որը բոլոր մուտքի պարամետրերի զանգված է: Սա նշանակում է, որ դուք կարող եք օգտագործել for-loop to iteratively մշակել յուրաքանչյուր մեկը, ինչպես նկարագրված է հետեւյալ օրինակին:

FILE1- ի համար «$ @» - ը կատարեց wc $ FILE1- ը

Ահա մի օրինակ, թե ինչպես կարելի է այս սցենարը հրաման տողից փաստարկներով զանգահարել.

sh stats.sh songlist1 songlist2 songlist3

Եթե ​​փաստարկ ունի տարածքներ, ապա դուք պետք է այն կցեք այն միայնակ տառերով: Օրինակ:

sh stats.sh 'songlist 1' 'երգացանկ 2' 'երգացանկ 3'

Հաճախ սցենար է գրված այնպիսին, որ օգտագործողը ցանկացած դրույթով կարող է անցնել փաստարկներով դրոշներով: Դրոշների մեթոդով դուք կարող եք նաեւ կատարել որոշակի փաստարկներ ընտրովի:

Թույլ տվեք ասել, որ դուք ունեք սցենար, որը տվյալների բազայից ստացվում է որոշակի պարամետրերի հիման վրա, ինչպիսիք են «օգտագործողի անունը», «ամսաթիվը» եւ «արտադրանքը» եւ առաջացնում է հաշվետվություն որոշակի «ձեւաչափով»: Այժմ ցանկանում եք գրել ձեր սցենարը, որպեսզի դուք կարողանաք անցնել այդ պարամետրերի, երբ սցենարը կոչվում է: Դա կարող է նման լինել.

makereport -u jsmith -p նոթատետրեր -d 10-20-2011 -f pdf

Bash- ը հնարավորություն է ընձեռում այս ֆունկցիոնալությունը ստանձնել «getopts» գործառույթը: Վերոնշյալ օրինակով դուք կարող եք օգտագործել ստեղնաշարը հետեւյալ կերպ.

Սա մի ժամանակահատված է, որը օգտագործում է «getopts» գործառույթը եւ այսպես կոչված «օպտիկական» գործառույթ, այս դեպքում «u: d: p: f:», այն վերափոխելու համար: The- ը loop- ը քայլում է ձախողման միջոցով, որը պարունակում է դրոշներ, որոնք կարող են օգտագործվել փաստարկներ անցնելու եւ դրոշի համար ներկայացված փաստարկի արժեքը հանձնում է «տարբերակ» փոփոխականին: Գործի հայտարարությունը այնուհետեւ հանձնում է «տարբերակ» փոփոխական արժեքը գլոբալ փոփոխականին, որը կարող է օգտագործվել բոլոր փաստարկները կարդալուց հետո:

Օպտիմալում գտնվող կույտերը նշանակում են, որ համապատասխան դրոշների համար պահանջվում է արժեքներ: Վերոնշյալ օրինակում բոլոր դրոշները հաջորդում են մի կետ `« u: d: p: f: »: Սա նշանակում է, բոլոր դրոշները արժեք ունեն: Եթե, օրինակ, «d» եւ «f» դրոշները չեն ակնկալվում, որ արժեք ունենան, ապա ընտրությունը կլինի «u: dp: f»:

Ուղղորդող սկավառակի սկիզբը, օրինակ `« u: d: p: f: », ունի բոլորովին այլ իմաստ: Այն թույլ է տալիս կարգավորել դրոշները, որոնք ներկայացված չեն օպտիմալացման մեջ: Այդ դեպքում «տարբերակ» փոփոխականի արժեքը սահմանվում է «?»: եւ «OPTARG» արժեքը սահմանվում է անսպասելի դրոշի: Ձեզ թույլ է տալիս ցուցադրել համապատասխան սխալ հաղորդագրություն, որը կխթանի օգտվողին սխալը:

Արձանագրությունները, որոնք նախորդում են դրոշը, անտեսվում են ստեղնաշարի միջոցով: Եթե ​​դրոշակները, որոնք նշված են սանդղակով, չեն տրամադրվում, երբ սցենարը կոչվում է, ոչինչ չի պատահում, եթե դուք հատուկ ձեր գործը վարեք ձեր կոդը: Ցանկացած փաստարկները, որոնք չեն վերցվում են getops- ի կողմից, կարող են գրավել սովորական $ 1, $ 2 եւ այլն: