Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.5.ZMIENNEŚRODOWISKOWE
Bash:
$test="Someexampletext."
$echo"{$test}"
Someexampletext.
$echo"SomeChar${test}AnotherChar"
SomeCharSomeexampletext.AnotherChar
$
cmd.exe:
>settest=Someexampletext.
>echo%test%
Someexampletext.
>echoSomeChar%test%AnotherChar
SomeCharSomeexampletext.AnotherChar
Delayedexpansionwcmd.exe[BEYOND]
Wprzypadkuinterpreteracmd.exeistniejejeszczejedenmechanizmodwoływaniasię
dozmiennychśrodowiskowychtzw.hopóźnionerozwinięcie”(delayedexpansion),
oznaczaneznakamiwykrzykników.Korzystasięzniegowzasadzietylkowprzypadku
bardziejskomplikowanychskryptów,używającychblokówkodu(oznaczanychnawia-
samiokrągłymi).Ohopóźnionymrozwinięciu”możemymyślećjakoostandardowych
odwołaniachdozmiennychznanychzróżnychjęzykówprogramowaniazaskoczeniem
wydajesię,żetowłaśniehnormalne”(tj.oznaczoneznakamiprocentów)rozwinięcie
wymagapewnegowyjaśnienia.
Wprzypadkuskryptów.bat(zwanychczasemskryptamibatchlubskryptamiwsa-
dowymi)standardowerozwinięciedziałapodobniedopreprocesorazjęzykówC/C++,
czylipodmianazmiennejnajejwartośćnastępujenasamympoczątkuprzetwarzania
danegobloku(lublinii)skryptu.Oznaczato,żejeśliwdanymblokunastąpizmiana
wartościzmiennej,tozmianataniezostanieodzwierciedlonaprzykolejnymużyciu
zmiennejwtymsamymbloku(wprzeciwieństwiedozmiennychrozwijanychzopóźnie-
niem,którychwartośćzostajepodstawionadopierowmomenciefaktycznegoużycia).
Stwierdzenietonajlepiejilustrujeponiższyprzykład,wykorzystującyobydwatypy
odwołaniadozmiennejtest,którejwartośćjestmodyfikowanawewnątrzbloku
kodu:
@echooff
setlocalenabledelayedexpansion
settest=Someexampletext.
(
echo%test%,!test!
settest=Switchingtexttothis.
37