Wéi Dir Argumenten un e Bash-Skript passen

Commande, Syntax a Beispiller

Dir kënnt e Schlag-Skript schreiwen, sou datt et Argumenter gëtt, wann e Skript vun der Kommandozeilung genannt gëtt. Dës Methode gëtt benotzt, wann e Skript eng liicht ënnerschiddlech Funktioun abhängt vun den Wäerter vun de Parameteren (Argumente).

Zum Beispill, Dir hutt e Skript genannt "stats.sh", deen eng speziell Operatioun op enger Datei ausgedeelt, wéi zielt se hir Wierder. Wann Dir wëllt Skript op vill Fichier benotze wëllt, ass et am beschten den Dateinumm als Argument ze passen, fir datt Dir déi selwecht Skript benotzt fir all déi Dateien déi veraarbecht ginn ze benotzen. Zum Beispill, wann de Numm vun der Datei veraarbecht ginn ass "Songlist", gitt Dir d'folgend Kommandozeilegung:

sh.st Songlist

Argumenter ginn an engem Skript mat den Variablen $ 1, $ 2, $ 3 etc. benotzt. Wou $ 1 bezunn op d'éischt Argument, $ 2 fir déi zweet Argumenter, a sou weider. Dëst ass am folgenden Beispill illustréiert:

FILE1 = $ 1 wc $ FILE1

Fir liibless ze weisen, ass eng Variabel mat engem beschreiwege Numm nom Wäert vun der éischter Argumentatioun ($ 1) ze weisen an dann d'Wuertzuel Utility ( wc ) op dëser Variabel ($ FILE1) ze nennen.

Wann Dir eng verännerlech Unzuel vun Argumenter hutt, kënnt Dir d'Variabel "$ @" benotzen, déi eng Rei vun all Parameteren ass. Dëst bedeit datt Dir e For-Loop iertiv veraarbecht ka benotzen, wéi am folgenden Beispiel illustriert:

Fir FILE1 an "$ @" get wc $ FILE1 gemaach

Hei ass e Beispill fir d'Skript mat Argumenter vun der Kommandozeil ze nennen:

sh stats.sh liest album1 Songlist2 Songlist3

Wann e Argument huet Leerplazen, braucht Dir se mat eenzel Zitater ëmzegoen. Zum Beispill:

sh stats.sh 'Songlist 1' 'Lidd 2' 'Lidd 3'

Heefeg ass e Skript geschriwwe ginn datt de Benotzer Argumenter an all Optrag duerch Fändelen iwwerginn kann. Mat der Markéierung vum Fändel kann Dir och e puer Argumenter fakultativ maachen.

Loosst Iech datt Dir e Skript hutt deen Informatiounen aus enger Datenbank baséiert op Basis vu spezifizéierte Parameteren, wéi "Benotzernumm", "Datum" a "Produkt", a generéiert e Rapport an engem spezifizéierte "Format". Elo wëlls de Äre Skript opschreiwen, sou datt Dir dës Parameteren duerchsiche kann wann de Skript opgeruff gëtt. Et ka kucken wéi:

Makereport -u jschsmith -p Notebooks -d 10-20-2011 -f pdf

Bash erméiglecht dës Funktionalitéit mat der "Getopten" -Funktion. Fir dat exempléiert Beispill kënnt Dir Bicher als folgend benotzen:

Dëst ass eng Zäitchen , déi d'Funktionnement "getopts" benotzt an e sougenannten "Optrëtt", an dësem Fall "u: d: p: f:", an eteréiert duerch d'Argumenter. De Repercussiounen féieren duerch d'Optrëtt, déi d'Fändelen enthält, déi benotzt kënne ginn fir Argumenter ze verfollegen, an déi Argument vun der Mark op déi variabel "Option" zugewiesen. D'Case-Erklärung ass dann de Wäert vun der Variabel "Optioun" zu enger globaler Variabelen ze ginn déi benotzt kënne ginn nodeems all d'Argumenter geliwwert goufen.

D'Kolonien am Optrëtt bedeit datt Wäerter fir déi entsprechend Fändelen erfuerderlech sinn. An dësem Beispill sinn all Flags an e Colon: "u: d: p: f:". Dat heescht, all Fligeren brauche Wäert. Wann zum Beispill d'"d" a "f" Markéierer net erwaart ginn, e Wäert ze hunn, ass de Optrëtt "u: dp: f".

Ee Kolon am Ufank vum Optrëtt, zum Beispill ": u: d: p: f:", huet eng ganz aner Bedeitung. Et erméiglecht Iech Fändelen ze maachen, déi net am Optrëtt vertruede sinn. An deem Fall gëtt de Wäert vun der Variable "Option" op "?" an de Wäert vun "OPTARG" ass op d'onerwaart Passagéier festgeluecht. De Programm erlaabt Iech eng passend Fehlermeldung ze weisen déi de Benotzer vum Feeler informéiert.

Argumenter, déi net vu engem Fändel leien, ginn ignoréiert vun Zopp. Wann Fändelen an der Optrall gezeechnet ginn net wann de Skript genannt gëtt, gëtt näischt geschitt, ausser Dir hutt dëse Fall am Handwierklech an Ärem Code handelen. All Argumenter déi net vu Getopen gehandhabt kënne ginn ëmmer mat de Reguläre $ 1, $ 2, etc. Variablen ageholl.