Bəşər ssenarisinə arqumentləri necə ötürmək olar?

Komutlar, sintaksis və nümunələr

Komanda xəttindən əmr verildikdə göstərilən arqumentləri qəbul edən bir bash skript yaza bilərsiniz. Bu metod, bir skript giriş parametrlərinin dəyərlərinə (arqumentlər) görə bir qədər fərqli funksiya yerinə yetirmək üçün istifadə edildikdə istifadə olunur.

Məsələn, "stats.sh" adlı bir skriptə sahib ola bilərsiniz, məsələn, sözləri saymaq kimi bir faylda xüsusi əməliyyat aparır. Bir çox faylda həmin skriptdən istifadə etmək istəyirsinizsə, faylın adını bir argüman kimi qəbul etmək yaxşıdır, belə ki, işləniləcək bütün fayllar üçün eyni skriptdən istifadə edə bilərsiniz. Məsələn, işləniləcək faylın adı "mahnı siyahıdırsa", aşağıdakı komanda xəttinə daxil olacaqsınız:

sh stats.sh songlist

Argumentlərə $ 1, $ 2, $ 3, və s. Dəyişənləri istifadə edərək bir skript daxilində daxil edilir, burada $ 1 birinci arqument, ikinci argumentə 2 dollar və s. Aiddir. Bu aşağıdakı nümunədə təsvir olunur:

FILE1 = $ 1 wc $ FILE1

Okunabilirlik üçün, ilk arqumentin ($ 1) dəyərinə təsviri adı ilə bir dəyişən təyin et və sonra bu dəyişəndə ​​($ FILE1) sözü count proqramını ( wc ) çağırın.

Değişken sayıda argüman varsa, bütün giriş parametrelerinin bir sıra olan "$ @" değişkenini istifadə edə bilərsiniz. Bu, aşağıdakı nümunədə göstərildiyi kimi, hər birini təkrarlamaq üçün for-loop istifadə edə bilərsiniz:

"$ @" dakı FILE1 üçün wc $ FILE1 edilir

Komut satırından argümanlarla bu scripti necə çağırmaq üçün bir nümunə:

sh stats.sh songlist1 songlist2 mahnı listesi3

Bir arqument boşluq varsa, onu tək quotes ilə əlavə etmək lazımdır. Misal üçün:

sh stats.sh 'songlist 1' 'mahnı listesi 2' 'songlist 3'

Tez-tez istifadəçi bayraqları istifadə edərək ardıcıllıqla hər hansı qaydada keçə biləcək bir yazı yazılır. Bayraqlar üsulu ilə, ayrıca bəzi argümanları isteğe bağlı edə bilərsiniz.

"İstifadəçi adı", "tarix" və "məhsul" kimi göstərilən parametrlərə əsasən məlumat bazasından məlumat əldə edən və müəyyən bir "formatda" hesabat tərtib edən bir skriptiniz olduğunu söyləyin. İndi scripti yazarkən bu parametrlərdən keçə bilmək üçün skript yazmaq istəyirsiz. Bu belə ola bilər:

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

Bash bu funksiyanı "getopts" funksiyası ilə təmin edir. Yuxarıda göstərilən nümunə üçün getoptsları aşağıdakı kimi istifadə edə bilərsiniz:

Bu, "u: d: p: f:", "u: d: p: f:" sözdəki "optstring" funksiyasını və "getopts" funksiyasından istifadə edən bir müddət loopdur. Zaman-loop, argumentlər keçmək üçün istifadə edilə bilən bayraqları ehtiva edən optstrinq vasitəsilə dolaşır və bu bayraq üçün verilən dəyişikliyin dəyərini dəyişən "seçim" ilə təyin edir. Sonra iddia ifadəsi dəyişən "seçimi" nin dəyərini bütün argümanların oxunmasından sonra istifadə edilə bilən qlobal dəyişənə təyin edir.

Optstring içərisindəki döngələr müvafiq bayraqların dəyərləri tələb olunur. Yuxarıda göstərilən bütün bayraqları "u: d: p: f:" dır. Yəni, bütün bayraqların dəyəri lazımdır. Məsələn, "d" və "f" bayrağının bir dəyəri olmadığı gözlənilmirsə, optstrinq "u: dp: f" olardı.

Məsələn, ": u: d: p: f:", optstring başında bir kolon tamamilə fərqli bir məna daşıyır. Bu optstrinqdə təmsil olunmayan bayraqları idarə etməyə imkan verir. Bu halda "seçim" dəyişəninin dəyəri "?" və "OPTARG" dəyərinin gözlənilməz bayrağa qoyulması. İstifadəçinin səhvini bildirən uyğun bir səhv mesajı göstərməyə imkan verir.

Bir bayraqdan əvvəl olmayan arqumentlər, getopts tərəfindən göz ardı edilir. Ssenaridə çağırıldıqda optstrinqdə göstərilən bayraqlar təmin edilmirsə, bu halda sizin kodunuzda xüsusi işləmədiyiniz halda heç bir şey olmaz. Getops tərəfindən idarə olunmayan hər hansı arqumentlər hələ də $ 1, $ 2, və s. Dəyişənlərlə ələ bilər.