Бир Баш-Script аргументтерин өтүп кантип

Буйруктар, синтаксистик жана мисалдар

Сиз жаза аласыз Баш скрипт жазма буйрук сабында деп жатканда, көрсөтүлгөн далилдерди кабыл ушундай. Бул ыкма бир скрипт киргизүү параметрлери (далилдер) баалуулуктарына жараша бир аз ар кандай милдетти аткаруу керек болгон учурларда колдонулат.

Мисалы, сиз, мисалы, анын сөздөрүн санап эле, делосуна боюнча бир ишин аткарат "stats.sh" деп аталган бир скрипт болушу мүмкүн. Сиз көп дептердин жанында бул арибин колдонгон албай келсе, анда бардык өздүк иштелип үчүн эле арибин колдонгон деп аргумент катары билэ атын, өтө жакшы болот. Мисалы, кайра иштетүү үчүн берилген аты "songlist" болсо, төмөнкү буйрук линиясын кирет:

Sh stats.sh songlist

Аргументтер $ 1 биринчи аргумент сөз, $ 2 экинчи тартышты, ошондуктан бир ариби өзгөрмө колдонуп $ 1, $ 2, $ 3, ж.б., ичинде окуй алат. Бул төмөнкү окуядан айкын көрүнүп турат:

FILE1 = $ 1 ажатканалары $ FILE1

Кашаага алуу үчүн, биринчи аргумент наркынын баяндоочу ат менен өзгөрмөнү дайындоону ($ 1), андан кийин сөз саны арналышты (чакыруу ажатканалары бул өзгөрмөнүн (FILE1 $) боюнча).

Эгер далилдерди өзгөрмө бир нече болсо, бардык киргизүү параметрлеринин бир катар болуп саналат "$ @" өзгөрмө, пайдалана алышат. Бул сиз колдоно аласыз билдирет үчүн илмеги төмөнкү мисалда көрүнүп тургандай, баажы ар бирин иштеп чыгуу:

"$ @" Даараткананын эмне $ FILE1 жылы FILE1 кылган

Бул буйрук сабында аргумент менен скрипт деп кантип кылуунун үлгүсү болуп саналат:

Sh stats.sh songlist1 songlist2 songlist3

талаш жайлар бар болсо, анда бир тырмакчага менен тиркелиши керек. Мисалы:

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

Көп бир скрипт колдонуучу желектерди колдонуп кандай тартипте далил өтө ала тургандай жазылган. желектери ыкма менен, силер да кошумча далилдерди кээ бир болот.

Сиз маалыматты "колдонуучу", "күндөн", жана "продукт" деп көрсөтүлгөн параметрлерди негизинде маалымат базасы, ошондой эле белгилүү бир "түрдө" бир отчет пайда табат нарийиӊиз дейли. Эми сиз жазуусу деп аталган качан бул көрсөткүчтөр боюнча өтүп деп жазуу жазып келет. Бул окшош болушу мүмкүн:

makereport -u jsmith -p ноутбуктун -d 10-20-2011 -f PDF

Баш "getopts" өзгөчөлүгү менен мүмкүнчүлүгүн берет. Жогоруда Мисалы, getopts тийиши мүмкүн төмөнкүдөй:

Бул болсо , ал эми-укурук "getopts" милдетти жана ошондой эле "optstring" колдонот, бул учурда "у: D: F:" далилдерди кыдырып чыгуу үчүн. эми-укурук аргументтерди өтүп колдонсо болот желектерди камтыйт optstring аркылуу жүрөт, ал эми өзгөрүлмө "тандоосу" деген желеги каралган аргумент маани энчилегенге. иш-билдирүүсүндө бардык далилдер окуп кийин колдонулушу мүмкүн глобалдык өзгөрмөгө өзгөрмө "тандоосу" баасын тапшырган.

optstring менен кош чекит баалуулуктар тиешелүү желектери талап кылынат дегенди билдирет. Жогоруда берилген мисалда бардык желектери кош чекит менен турат: "U: D: F". Бул, бардык желектер наркы керек. Эгер, мисалы, "д" жана "е", желектер бир мааниге ээ эмес эле, optstring болмок "U: DP: е".

optstring башындагы бир чекит, мисалы: "у: D: F", такыр башка мааниге ээ. Бул optstring көрсөтүлгөн эмес, желектерди чечүүгө мүмкүндүк берет. Ошол учурда "ТОсу" наркы өзгөрмөгө коюлган "?" жана "OPTARG" мааниси күтүлбөгөн желеги менен белгиленет. Эгер катаны колдонуучу маалымдоо ылайыктуу ката билдирүү көрсөтүүгө мүмкүнчүлүк берет.

бир туунун алдында эмес, далилдерди getopts тарабынан этибарга алынбай жатат. optstring көрсөтүлгөн желектер жазуусу деп аталган качан каралган эмес болсо, эч нерсе атайын кодду бул ишти туура келбесе, эмне болот. Ар бир getops караштуу талашып-тартышуу эмес, дагы эле туруктуу $ 1, $ 2, ж.б. өзгөрүлмөлүүлөр менен тартып алса болот.