Bawo ni lati ṣe ariyanjiyan si iwe-akọọlẹ Bash

Awọn aṣẹ, isopọ ati apẹẹrẹ

O le kọ iwe apẹrẹ kekere bi o ṣe gba awọn ariyanjiyan ti o wa nigbati a npe ni akosile lati ila ila. Ọna yii ni a lo nigba ti iwe-akọọlẹ kan ni lati ṣe iṣẹ oriṣiriṣi oriṣiriṣi kan da lori awọn iye ti awọn ipinnu titẹ sii (awọn ariyanjiyan).

Fun apere, o le ni iwe-akọọlẹ ti a npe ni "stats.sh" ti o ṣe iṣiṣe kan pato lori faili kan, gẹgẹbi kika awọn ọrọ rẹ. Ti o ba fẹ lati lo akosile yii lori ọpọlọpọ awọn faili, o dara julọ lati ṣe orukọ faili gẹgẹbi ariyanjiyan, ki o le lo iwe-kikọ kanna fun gbogbo awọn faili to wa ni itọsọna. Fun apeere, ti orukọ faili naa ba wa ni itọsọna ni "songlist", iwọ yoo tẹ laini aṣẹ wọnyi:

sh stats.sh songlist

Awọn ariyanjiyan ti wọle si inu akosile kan nipa lilo awọn oniyipada $ 1, $ 2, $ 3, ati bẹbẹ lọ, nibiti $ 1 ntokasi ariyanjiyan akọkọ, $ 2 si ariyanjiyan keji, ati bẹbẹ lọ. Eyi jẹ apẹẹrẹ ni apẹẹrẹ wọnyi:

FILE1 = $ 1 wc $ FILE1

Fun kika, fi iyọdapa kan pẹlu orukọ alaye kan si iye ti ariyanjiyan akọkọ ($ 1), lẹhinna pe ọrọ naa ni iwulo ( wc ) lori ayípadà yii ($ FILE1).

Ti o ba ni nọmba iyipada ti awọn ariyanjiyan, o le lo "$ @" iyipada, ti o jẹ ibiti gbogbo awọn ipinnu titẹ sii. Eyi tumọ si pe o le lo itọnisọna kan fun ilana ti iṣanṣe kọọkan, gẹgẹbi a ṣe apejuwe ninu apẹẹrẹ wọnyi:

fun FILE1 ni "$ @" ṣe WC $ FILE1 ṣe

Eyi jẹ apẹẹrẹ ti bi a ṣe le pe akosile yii pẹlu awọn ariyanjiyan lati laini aṣẹ:

sh stats.sh songlist1 songlist2 songlist3

Ti ariyanjiyan ba ni awọn aaye, o nilo lati ṣafikun rẹ pẹlu awọn fifawo kan. Fun apere:

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

Nigbagbogbo a kọ iwe akọọlẹ pe olumulo le ṣe awọn ariyanjiyan ni eyikeyi aṣẹ nipa lilo awọn asia. Pẹlu ọna abawọn, o tun le ṣe diẹ ninu awọn ariyanjiyan aṣayan.

Jẹ ki o sọ pe o ni akosile ti o gba alaye lati ibi ipamọ ti o da lori awọn ipilẹ ti a pàtó, bii "orukọ olumulo", "ọjọ", ati "ọja", o si ṣe ijabọ kan ni "kika" ti a pato. Nisisiyi o fẹ kọ iwe-kikọ rẹ ki o le kọja ni awọn igbasilẹ wọnyi nigbati a npe ni akosile. O le dabi eleyi:

makereport -u jsmith -p awọn akọsilẹ -d 10-20-2011 -f pdf

Bash ṣe iranlọwọ iṣẹ yii pẹlu iṣẹ "getopts". Fun apẹẹrẹ ti o wa loke, o le lo awọn işẹ bi awọn wọnyi:

Eyi jẹ iṣẹ -ṣiṣe ti o nlo iṣẹ "getopts" ati eyiti a npe ni "ti o dara ju", ni idi eyi "u: d: p: f:", lati ṣe ayẹwo nipasẹ awọn ariyanjiyan. Akọọlẹ-ṣiṣe-nlọ nipasẹ awọn iyipada, eyi ti o ni awọn asia ti a le lo lati ṣe awọn ariyanjiyan, ki o si fi iyatọ ariyanjiyan ti a pese fun ọkọ yii si "aṣayan" iyipada. Ọrọ igbani-ọrọ naa ṣe ipinnu iye ti "aṣayan" iyipada si iyipada agbaye ti o le lo lẹhin gbogbo awọn ariyanjiyan ti a ti ka.

Awọn alagbego naa ni ọna ti o tumọ si pe awọn iṣiro nilo fun awọn asia to fẹ. Ninu apẹẹrẹ ti o wa loke gbogbo awọn asia ti tẹle pẹlu ọwọn kan: "u: d: p: f:". Eyi tumọ si, gbogbo awọn asia nilo iye. Ti, fun apẹẹrẹ, awọn asia "d" ati "f" ko nireti lati ni iye, iyasọtọ yoo jẹ "u: dp: f".

Atọka ni ibẹrẹ ti o dara julọ, fun apẹẹrẹ ": u: d: p: f:", ni itumo ti o yatọ. O faye gba o laaye lati mu awọn asia ti a ko ni ipoduduro ninu ọna ti o dara julọ. Ni ọran naa iye ti "iyipada" aṣayan "ṣeto si"? " ati iye ti "OPTARG" ti ṣeto si aṣoju airotẹlẹ. O faye gba o lati ṣafihan ifiranṣẹ ti o dara ti o fun olumulo ti aṣiṣe naa.

Awọn ariyanjiyan ti a ko ti ṣaju ọkọ ayokele kan ni a ko bikita nipasẹ awọn ti o gba. Ti awọn asia ti o wa ninu awọn aṣayan ti a ko pe nigba ti a npe ni akosile, ko si ohunkan ti o ṣẹlẹ, ayafi ti o ba mu ọran yii daradara ninu koodu rẹ. Gbogbo awọn ariyanjiyan ti a ko ni ọwọ nipasẹ awọn igbasilẹ ni a le gba pẹlu awọn oniye $ 1, $ 2, ati bẹbẹ lọ.