Shellové skripty a argumenty - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Jaký fotograf/ka získal/a cenu za nejpopulárnější příspěvek v Nikon Photo Contest?

V dnešní soutěži hrajeme o:

Seriály

Více seriálů



Informace

Shellové skripty a argumenty

2. května 2002, 00.00 | Jak víme, skripty lze připravovat pro kterýkoli program, který máme k dispozici — včetně vlastních programů a, jak si ukážeme dnes, dokonce včetně vlastních skriptů (tj. můžeme psát "meta-skripty", jež budou interpretovány naším vlastním skriptem!).

Shellové skripty a argumenty

Jak víme, skripty lze připravovat pro kterýkoli program, který máme k dispozici — včetně vlastních programů a, jak si ukážeme dnes, dokonce včetně vlastních skriptů (tj. můžeme psát "meta-skripty", které budou interpretovány naším vlastním skriptem!).

S jedinou výjimkou zmíněného příkladu však se od nynějška soustředíme na psaní skriptů pro shelly: jinými slovy, budeme se vlastně zabývat řadou dalších příkazů a služeb standardních shellů, vhodných pro práci se skripty.

Který shell vybrat?

Můžeme psát skripty v kterémkoli shellu, který máme k dispozici. Řada céčkových programátorů např. preferuje csh (resp. tcsh) pro jeho podobnost s jazykem C; já osobně se však přiznám, že chci-li již psát "v céčku", prostě to "céčko" použiji rovnou. Z shellů mám raději zsh, jehož služby mi připadají bohatší a příjemnější. V zsh proto také budou naše příklady.

(Připomeňme, že i pokud sami preferujete jiný shell, nic vám nebrání používat zsh skripty: stačí použít standardní komentář "#!/bin/zsh" na prvém řádku, a skript se provede korektně i třeba z ksh nebo bash. Stejně dobře to samozřejmě jde i naopak: můžeme třeba používat zsh, a díky komentáři "#!/bin/csh" psát "céčkové" skripty.)

Existuje snad jediný případ, kdy je vhodné uvažovat o tradičním shellu sh: chceme-li, aby naše skripty pracovaly korektně na (téměř) libovolném unixovém stroji, je vhodné použít sh: ten je k dispozici opravdu všude, zatímco pro ostatní, bohatší shelly to platit nemusí. Pokud ale, — jak předpokládám, — budete psát shelly pro Mac OS X, můžete si vybrat kterýkoli shell, který vám nejlépe vyhovuje.

Argumenty příkazového řádku

Jak jsme si slíbili minule, začneme zpracováním argumentů příkazového řádku; to nám umožní napsat skript, jehož funkce bude ekvivalentní céčkovému programu z posledního příkladu v minulém dílu.

Pro odkazy na všemožné parametry a proměnné shellu (z nichž si samozřejmě řadu ukážeme v příštích dílech) slouží znak '$' — už jej ostatně známe z osmého dílu, kde jsme jej používali pro výpis proměnné PATH:

 echo $PATH

Pro přístup k argumentům příkazového řádku slouží jednoduché pravidlo: uvedeme-li za znakem '$' číslo N, půjde vždy o odkaz na Ntý argument. Kromě toho můžeme použít také hvězdičku, jež reprezentuje všechny argumenty, a hash ("#"), který odpovídá jejich počtu.

Abychom mohli vypsat každý argument samostatně, potřebujeme ještě příkaz for; se všemi jeho možnostmi se podrobněji seznámíme později, dnes si jej ukážeme jen v základní, nejjednodušší podobě.

Celý skript by mohl vypadat takto:

 #!/bin/zsh
 # opsat vsechny argumenty na std.vystup
 echo $0
 for ii in $*; echo $ii

"Argument" na pozici nula (který reprezentuje "jméno právě běžícího programu") musíme vypsat zvlášť, protože "$*" vypisuje argumenty až od "jedničky" — to je většinou také to, co opravdu chceme; náš minulý příklad byl trochu umělý.

Jestliže tento skript uložíme do souboru qqq namísto céčkového programu z minulého dílu, můžeme použít beze změny testovací skript test:

 206 /tmp> cat test
 #!/tmp/qqq uz je to snad jasne
 # nic dalsiho sem nema smysl psat
 207 /tmp> ./test  
 /tmp/qqq
 uz je to snad jasne
 ./test
 208 /tmp> 

Jediný rozdíl proti "céčkové" variantě je, že náš skript nevypisuje pořadová čísla argumentů; to doplníme příště, kdy se trochu blíž podíváme na proměnné.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Software  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: