Bash-Script-д аргументуудыг хэрхэн яаж дамжуулах вэ?

Тушаал, синтакс болон жишээнүүд

Та скриптийг тушаалын мөрөөс дуудсан үед тодорхойлсон аргументуудыг хүлээн авдаг. Энэ аргыг скрипт нь оролтын параметрийн утгуудаас хамаарч арай өөр функцийг гүйцэтгэхэд ашиглагддаг.

Жишээ нь, та "stats.sh" гэж нэрлэгддэг скрипт нь түүний тухайн үгсийг тоолох гэх мэт файлын тодорхой үйлдлийг гүйцэтгэдэг. Хэрэв та энэ скриптийг олон файл дээр ашиглахыг хүсэж байгаа бол файлын нэрийг аргумент байдлаар дамжуулах нь зүйтэй бөгөөд ингэснээр та бүх файлуудыг боловсруулахад ижил скрипт ашиглаж болно. Жишээ нь хэрэв файлын нэрийг "songlist" гэж нэрлэсэн бол та дараах тушаалын мөрөнд оруулна:

sh stats.sh songlist

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

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'

Ихэнхдээ скриптийг хэрэглэгч ямар ч дарааллаар тугуудыг ашиглан мэтгэлцэх боломжтой. Тушаалын аргаар бол та зарим нэмэлт аргументуудыг хийж болно.

"Хэрэглэгчийн нэр," "огноо", "Бүтээгдэхүүн" зэрэг тодорхой параметрийн дагуу өгөгдлийг мэдээллийн санд байршуулж, тодорхой "формат" дээр тайланг үүсгэдэг. Та скриптийг дуудах үед эдгээр параметрүүдийг дамжуулж болох учраас скрипт бичихийг хүсч байна. Энэ нь иймэрхүү харагдах болно:

buildeport -u jsmith -p тэмдэгтийн -d 10-20-2011 -f pdf

Bash энэ функцийг "getopts" функцээр идэвхжүүлдэг. Дээрх жишээний хувьд getopts-ийг дараах маягаар ашиглаж болно:

Энэ бол "getopts" функц ба "optstring" гэж нэрлэдэг while-loop гэсэн үг бөгөөд энэ тохиолдолд "u: d: p: f:", аргументуудаар давтагдах болно. Дугуй хүрд нь обьектуудыг дамжуулахад ашиглаж болох тугуудыг агуулсан optstring-ээр дамжиж, тухайн туганд өгсөн хувьсагч утгыг хувьсагчийн "сонголт" -д өгдөг. Кейс-ийн тайлал нь хувьсагчийн "option" хувьсагчийн утгыг бүх аргументууд уншсаны дараа ашиглаж болох хувьсагчдад өгдөг.

Оптик холболттой цэгүүд нь холбогдох тугуудын хувьд утга шаардагдана гэсэн үг юм. Дээрх жишээнд бүх тугуудыг хожигдлоор нь дараалуулан байрлуулна: "u: d: p: f:". Энэ нь бүх тугуудыг утга агуулах хэрэгтэй гэсэн үг юм. Жишээлбэл, "d" ба "f" тугнууд нь утгатай байхаар төлөвлөгдөөгүй бол оптимал нь "у: dp: f" байх болно.

Жишээ нь: ":: d: p: f:" гэдэг нь өөр өөр утгатай. Энэ нь optstring дээр төлөөлөлгүй тугуудыг удирдана. Энэ тохиолдолд "опционы" хувьсагчийн утга нь "?" "OPTARG" утга нь гэнэтийн туганд тавигддаг. Энэ алдаатай хэрэглэгчдэд тохирох алдааны мэдээг үзүүлэх боломжтой.

Төрийн далбааг өмнө нь тавиагүй аргументууд нь гонподоор үл тоомсорлодог. Хэрэв та скриптийг дуудах үед optstring дээр заасан тугуудыг зааж өгөөгүй бол ямар ч тохиолдолд энэ кодыг тусгайлан зохицуулаагүй тохиолдолд тохиолддог. Getops-ээр явдаггүй аливаа нэмэлт өгөгдлүүд нь тогтмол $ 1, $ 2, гэх мэт хувьсагчуудаар хийгдэж болно.