Narzędzia użytkownika

Narzędzia witryny


so:shell_constructs

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
so:shell_constructs [2025/05/13 10:40]
jkonczak [if]
so:shell_constructs [2025/05/19 15:58] (aktualna)
jkonczak [read]
Linia 281: Linia 281:
 |''​[ "​$X"​ -gt "​$Y"​ ]''​|liczba ''"​$X"''​ jest większa ''"​$Y"''​| |''​[ "​$X"​ -gt "​$Y"​ ]''​|liczba ''"​$X"''​ jest większa ''"​$Y"''​|
 |''​[ "​$X"​ -ge "​$Y"​ ]''​|liczba ''"​$X"''​ jest większa bądź równa ''"​$Y"''​| |''​[ "​$X"​ -ge "​$Y"​ ]''​|liczba ''"​$X"''​ jest większa bądź równa ''"​$Y"''​|
 +
 +Uwaga: komenda ''​test''​ wykonująca porównanie arytmetyczne kończy się błędem
 +jeżeli którykolwiek z argumentów nie jest liczbą. \\
 +<​small>​
 +Dlatego np. użycie do sprawdzenia argumentów
 +''​if [ "​$1"​ -gt "​$2"​ ]; then exit 1; fi''​ da inny efekt niż
 +''​if ! [ "​$1"​ -le "​$2"​ ]; then exit 1; fi''​ – dla argumentów będących liczbą obie 
 +wersje działają tak samo, ale pierwsza przepuści też argumenty niebędące liczbą.
 +Zważ że ''​!''​ neguje komendę, a nie porównanie.
 +</​small>​
  
 === Testy plików (wybór) === === Testy plików (wybór) ===
Linia 439: Linia 449:
 ''​for NUM in $(seq -w 001 3)''​ → ''​for NUM in 001 002 003''​ \\ ''​for NUM in $(seq -w 001 3)''​ → ''​for NUM in 001 002 003''​ \\
 ''​for USERNAME in $(getent passwd | cut -f1 -d:​)''​ → ''​for USERNAME in root student ...''​ \\ ''​for USERNAME in $(getent passwd | cut -f1 -d:​)''​ → ''​for USERNAME in root student ...''​ \\
 +''​for FILE in "​$DIR"/​*''​ → ''​for FILE in 'my dir/file 1' ​ 'my dir/file 2' ​ 'my dir/​subdir%%'​%%''​ \\
 ''​for FILE in $(grep -il '​ldap'​ /etc/*.conf 2>/​dev/​null)''​ → ''​for FILE in /​etc/​autofs.conf /​etc/​ldap.conf ...''​((Uwaga na spacje w nazwach plików! Ta wersja nie jest na nie odporna.)) ''​for FILE in $(grep -il '​ldap'​ /etc/*.conf 2>/​dev/​null)''​ → ''​for FILE in /​etc/​autofs.conf /​etc/​ldap.conf ...''​((Uwaga na spacje w nazwach plików! Ta wersja nie jest na nie odporna.))
  
Linia 550: Linia 561:
   ...   ...
 done done
-</​code>​ 1. ''​polecenie''​ jest wykonywane współbieżnie z pętlą \\ 2. wyniki polecenia mogą mieć spacje w linii |<code bash>+</​code>​ 1. ''​polecenie''​ jest wykonywane współbieżnie z pętlą \\ 2. wyniki polecenia mogą mieć spacje w linii \\ <​html><​small>​Uwaga:​ tylko jedna z komend z potoku (domyślnie pierwsza) działa <br> pierwszoplanowo,​ przez co przypisania zmiennych wewnątrz pętli <br> (działającej w tle) nie będą widoczne dalej w skrypcie</​small><​div style="​margin-top:​ -1.4em"></​div></​html>​|<code bash>
 while read X Y while read X Y
 do do
Linia 571: Linia 582:
 wczytanych liczb. wczytanych liczb.
  
 +~~Zadanie.#​~~
 +Napisz skrypt który odczytuje ze standardowego wejścia linie złożone z dwóch
 +liczb i po przeczytaniu każdej linii wypisuje iloczyn liczb z tej linii.
 +Skrypt ma działać do czasu aż odczytywanie z wejścia nie napotka końca pliku.
 ==== select – rozszerzenie Basha ==== ==== select – rozszerzenie Basha ====
  
so/shell_constructs.1747125622.txt.gz · ostatnio zmienione: 2025/05/13 10:40 przez jkonczak