Бастапқы сценарийге қалай дәлелдеуге болады?

Командалар, синтаксис және мысалдар

Сіз сценарийді командалық жолдан шақырылғанда дәлелдерді алған сияқты бас сценарий жаза аласыз. Бұл әдіс сценарий кіріс параметрінің мәндеріне (аргументтерге) байланысты сәл өзгеше функцияны орындау керек болғанда қолданылады.

Мысалы, файлдағы белгілі бір операцияны орындаған «stats.sh» деп аталатын сценарий болуы мүмкін, мысалы, сөздерді санау. Егер сіз сол сценарийді көптеген файлдарда пайдалануды қаласаңыз, өңдеу үшін барлық файлдар үшін сол сценарийді пайдалану үшін файл атауын дәлел ретінде беру керек. Мысалы, өңделетін файлдың атауы «ән тізімі» болса, келесі пәрмен жолын енгізесіз:

sh stats.sh әндер тізімі

Аргументтерге скриптің ішінде $ 1, $ 2, $ 3 және т.б. айнымалы мәндерді қолдана отырып қол жеткізіледі, мұнда $ 1 бірінші аргумент, екінші дәлелге $ 2 және тағы басқалар жатады. Бұл келесі мысалда көрсетілген:

FILE1 = $ 1 wc $ FILE1

Оқу үшін, бірінші аргумент ($ 1) мәніне сипаттама атауымен айнымалыны тағайындаңыз, содан кейін осы айнымалы ($ FILE1) сөзді санау утилитасын ( wc ) шақырыңыз.

Егер сізде аргументтердің айнымалы саны болса, барлық кіріс параметрлерінің массиві болып табылатын «$ @» айнымалы мәнін қолдануға болады. Бұл төмендегі мысалда көрсетілгендей, әрбіреуін итеративно өңдейтін циклды қолдануға болады:

«$ @» ішінде FILE1 үшін wc $ FILE1 жасалды

Бұл сценарийді командалық жолдан дәлелдермен қалай шақырудың мысалы келтірілген:

sh stats.sh әндер тізімі1 songlist2 songlist3

Аргумент кеңістігі болса, оны жалғыз тырнақшалармен бірге қосу қажет. Мысалға:

sh stats.sh 'songlist 1' 'ән тізімі 2' 'ән тізімі 3'

Жиі сценарий жазылады, ол пайдаланушыларды жалауларды пайдаланып кез-келген тәртіпте аргументтермен өткізе алады. Тулардың әдісімен сіз кейбір дәлелдерді міндетті түрде жасай аласыз.

Дерекқордан «username», «date» және «product» сияқты көрсетілген параметрлерге негізделген ақпаратты шығаратын сценарий бар және айтылған «пішімде» есеп жасайды. Енді сценарийді сценарийге шақырғанда осы параметрлерден өтуге болады. Бұл келесідей болуы мүмкін:

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

Bash бұл функцияны «getopts» функциясымен қосады. Жоғарыда келтірілген мысал үшін, getopts төмендегідей қолдануға болады:

Бұл дәлелдер арқылы қайталану үшін, «u: d: p: f:» деп аталған «getopts» функциясын және «оптикалық» деп аталатын уақытша цикл. Уақытша-цикл аргументтерді қабылдау үшін пайдаланылатын жалаушаларды қамтитын оптикалық жол арқылы жүреді және сол жалауша үшін ұсынылған аргумент мәнін айнымалы «опцияға» тағайындайды. Кейінгі жағдайда, «опция» айнымалы мәнін барлық дәлелдер оқылғаннан кейін қолданыла алатын жаһандық айнымалы мәнге тағайындайды.

Оптикалық жолдағы қос нүктелер сәйкес мәндер үшін мәндерді қажет етеді. Жоғарыда келтірілген мысалда барлық жалаулар екі жақты: «u: d: p: f:». Бұл дегеніміз, барлық жалаулар құны қажет. Егер, мысалы, «d» және «f» жалауларының мәні болмаса, оптикалық «u: dp: f» болады.

Мысалы, «: u: d: p: f:» оптикалық басында нүкте толығымен өзгеше. Ол оптикалық жолда ұсынылмаған жалаушаларды басқаруға мүмкіндік береді. Бұл жағдайда «опцияның» айнымалы мәні «?» және «OPTARG» мәні күтпеген жалауша орнатылады. Қатеге қате туралы хабарлауға мүмкіндік беретін тиісті қате туралы хабарды көрсетуге мүмкіндік береді.

Тудың алдында туындамаған дәлелдер геттолармен еленбейді. Сценарийді шақырғанда, оптикалық жолда көрсетілген жалаушалар көрсетілмесе, бұл кодыңызда арнайы жағдайды қарастырмасаңыз, ештеңе болмайды. Айта кететін кез-келген аргументтерді $ 1, $ 2 және т.б. айнымалы мәндермен ұстап алуға болады.