From d5089d58cf6aafe118c1147122ff2754127f9d30 Mon Sep 17 00:00:00 2001
From: xf0r3m
+ Wyrażenie parametru posiada w BASH-u kilka funkcji. Jednak chyba + najważniejszÄ oraz tÄ , która wymaga zapamiÄtania jest separacja + nazwy zmiennej od pozostaÅych elementów, jest to szczególnie + przydatne gdy scieżki w instrukcjach zawierajÄ zmienne. + Wyrażenie parametru jest przedstawiane za pomocÄ pary nawiasów + klamrowych poprzezdzonych znakiem dolara (${}) + pomiÄdzy nawiasami zapisuje siÄ nazwÄ zmiennej, już bez znaku + dolara. +
+
+wget https://ftp.server.com/example/${ARCH}/${VERSION}/file.tgz
+
+ + OczywiÅcie poza funkcjÄ separacyjnÄ wyrażenie parametru kilka innych + zastosowaÅ, jedno już zostaÅo tutaj wymienione, jest to dostÄp do + parametrów pozycyjnych powyżej 10-tej pozycji. +
++ Niektóre narzÄdzie wykorzystywane przez nas do pracy w dystrybucjach + Linuksa, zostajÄ przez nas uruchomione i zaraz po tym zostaje nam + zwrócony znak zachÄty. I tak naprawdÄ to nie wiemy czy program + wykonaÅ swoje zadanie pomyÅlnie czy też nie. Nie mniej jednak + wiÄkszoÅÄ programów dziaÅajÄ cych na Uniksa zwraca takzwany kod + wyjÅcia. +
++ W przypadku wartoÅci nie zerowych programiÅci majÄ caÅy wachlarz + możliwoÅci na opisanie co poszÅo nie tak, zwracajÄ c kod wyjÅcia + inny niż 0. Do dyspozycji majÄ od 1 - 255 możliwoÅci. Kod wyjÅcia + 1 jest najczÄÅciej wykorzystywany jako bÅÄ d ogólny + i ta wartoÅÄ jest najczÄsciej zwracana przez programy. Programy + raczej sporadycznie korzystajÄ z pozostaÅych wartoÅci, oczywiÅcie + wszystko pozostaje w rÄkach programistów. +
++ RozpoczynajÄ c omawianie wyrażeÅ warunkowych, warto sobie wyjaÅniÄ, + że w BASH-u nie operujemy na wartoÅciach logicznych. Na wartoÅciach + logicznych operujÄ polecenie wykonujÄ ce sprawdzenie danego wyrażenia + warunkowego. Na podstawie wyniku tego wyrażnia narzÄdzia te + generujÄ kod wyjÅcia: 0 - dla + prawdy i 1 - dla faÅszu. + Warto mieÄ to na uwadzÄ, aby podczas debugowania nie zastanawiaÄ siÄ + dlaczego nasz warunek zwraca 0, a wykonywany jest blok kodu dla + prawdy. +
++ Instrukcjami warunkowymi możemy nazwaÄ polecenia, które zwrócÄ nam + odpowiedni kod wyjÅcia na podstawie testu logicznego podanego jako + argument. Zazwyczaj zapisanie takie testu nie różni siÄ niczym od + zapisania warunku w innych jÄzykach. +
++ W BASH-u do dyspozycji mamy takie instrukcje jak [, + test, [[. Pierwsze dwie instrukcje + sÄ identyczne i najczÄÅciej instrukcja [ jest + przedstawiana jako alias instrukcji test, która wystÄpuje + nie tylko BASH-u, ale w wiÄkszoÅci powÅok Uniksowych. InnÄ instrukcjÄ + jest [[ jest klasyczny test jednak jego + funkcjonalnoÅÄ zostaÅa rozszerzona, jednym z takich rozszerzeÅ jest + sprawdzenie czy np. podany ciÄ g znaków pasuje do nazwy wieloznacznej. + Instrukcji [[ nie bÄdziemy tutaj omawiaÄ. +
++ Instrukcje warunkowe do wykonania warunku logicznego potrzebujemy + dwóch operandów oraz operatora lub jednego operandu oraz operatora, + ponieważ wÅród operacji warunkowych istniejÄ operacje + jednoargumentowe. Zazwyczaj przeprowadzane sÄ one Åcieżkach + wskazujÄ cych plik lub katalog. Takich jak na przykÅad: +
++[ -f $HOME/testfile.txt ] ++
+ Ten warunek sprawdzi czy plik
+ $HOME/testfile.txt jest zwykÅym
+ plikiem.
+
+ Warunki które wymagajÄ dwóch operatorów, to zazwyczaj takie jakie + znamy z lekcji matematyki: a > b, d <= e itd. Przyczym tutaj + warto przypomnieÅ, że zapis instrukcji warunkowych (warunków), jest + jednoczeÅnie zapisem polecenia, tak wiÄc nie można użyÄ znaków + mniejszoÅci (<) czy wiÄkszoÅci (>), + zamiast nich musimy używaÄ specjalnie przygotowanych na tÄ okazjÄ + zamienników: +
++ Nie bÄdÄ tutaj wszysktich wypisywaÅ, wszystkie operatory wraz tymi + jednoargumentowymi znajdziemy na stronie podrÄcznika polecenia + test lub na stronie podrÄcznika powÅoki BASH w sekcji + CONDITIONAL EXPRESSIONS. Mimo to warto zaznaczyÄ, że te + wyżej wymienione operatory wymagajÄ caÅkowitych (liczb caÅkowitych) + operandów, a przyrównanie ciÄ gów znaków wymaga pojednyczego znaku + równoÅci (=), a nie dwóch jak w przypadku innych + jÄzyków. Warto mieÄ to uwadze. +
++ Instukcje warunkowe na podstawie przekazanych przez programistÄ + warunków, zwracaja kod wyjscia, który najczÄÅciej interpretowany jest + przez konstrukcje warnukowe. +
++ Konstrukcje warunkowe sÄ elementem kontrolnym w programowaniu. + Ich zadaniem jest wykonanie okreÅlonych instrukcji w determinowanych + na podstawie przekazanej instrukcji warunkowej. I najprostszym tego + typu konstrukcjÄ jest if-then-else. +
++ Konstrukcja if-then-else, jest podstawowÄ konstrukcjÄ + warunkowÄ opartÄ o wynik jednej instrukcji warunkowej oraz + zawierajÄ cÄ dwa bloki kodu, dla prawdy oraz faÅszu. +
++if warunek; then + #Blok kodu dla prawdy +else + #Blok kodu dla faÅszu +fi ++
+ Konstrukcja rozpoczyna siÄ od sÅowa kluczowego
+ if, oznacza on poczÄ
tek konstrukcji,
+ nastÄpnie obok znajduje siÄ warunek,
+ warunek może byÄ instrukcjÄ
warunkowÄ
, ale może byÄ rownież
+ poleceniem lub jego podstawieniem - czymÅ co jest nam wstanie
+ zwróciÄ kod wyjÅcia. Po warunku obowiÄ
zkowo wystÄpuje Årednik,
+ nastÄpnie sÅowo kluczowe then
+ otwierajÄ
ce blok kodu dla sytuacji, w której warunek zwróciŠkod
+ wyjÅcia równy 0 (potocznie nazwywany prawdÄ
). Po
+ tym bloku wystÄpuje sÅowo kluczowe
+ else otwierajÄ
c tym samym blok
+ kodu dla każdej innej wartoÅci kodu wyjÅcia, która nie jest zerem.
+ Na samym koÅcu znajduje siÄ sÅowo kluczowe
+ fi, zamykajÄ
ce blok else
+ oraz caÅÄ
konstrukcjÄ.
+
+ KonstrukcjÄ if-then-else można rozszerzyÄ od dodatkowy + blok warunkowy elif. W momencie interpretacji takiej + konstrukcji BASH sprawdzi na poczÄ tek warunek przy if + nastÄpnie przy elif i jeÅli oba te warunki oba te warunki + zwrócÄ niezerowy kod wyjÅcia, wtedy zostanÄ wykonane instrukcje + zapisane w bloku else. Warto dodaÄ, że nie ma limitu w + iloÅci dodatkowych warunków (elif) tworzÄ c przy tym caÅÄ + kaskadÄ. Ponizej znajdue siÄ przykÅad poglÄ dowy przezentujÄ cy + konstrukcjÄ if-then-elif-else: +
++if warunek; then + #Blok dla prawdy warunku; +elif warunek2; then + #Blok dla prawdy warunku2; +else + #Blok dla faÅszu obu warunków; +fi ++
2024; COPYLEFT; ALL RIGHTS REVERSED; -- 2.39.5