EXPR(1)

NAZWA
expr - wykonaj wyrażenia

SKŁADNIA
expr wyrażenie...
expr [--help] [--version]

OPIS
Ta strona podręcznika man opisuje polecenie expr w wersji GNU.

expr wykonuje obliczenie i zapisuje rezultat na standardowe wyjście. Każdy żeton wyrażenia musi być oddzielnym argumentem. Operandy mogą być liczbami lub ciągami znaków. Łańcuchów znaków nie cytuje się dla expr, choć możesz być zmuszonym do tego, by ochronić je przed powłoką (znaki i łańcuchy o specjalnym znaczeniu dla powłoki, np. spacja). expr rzutuje wszystko znajdujące się po stronie operandowej na integer lub łańcuch, zależnie od rodzaju operacji.

Operatory mogą być podawane jako symbole wrostkowe lub kluczowe słowa przedrostkowe. Do grupowania można w zwykły sposób korzystać z nawiasów. (nawiasy muszą być jednak cytowane, by ochronić je przed rozwinięciem przez powłokę).

OPERACJE
Operatory (w kolejności rosnącego priorytetu) to:

  Wyrażenia łańcuchowe
expr obsługuje dopasowywanie wzorców i inne operatory łańcuchowe. Mają one niższy priorytet niż operatory numeryczne czy relacyjne (w następnych sekcjach).

łańcuch : regex
    Dokonuje porównania wzorców. Argumenty są rzutowane na łańcuchy, a drugi jest uważany za (podstawowe, a la GNU `grep') wyrażenie regularne, poprzedzone niejawnym `^'. Następnie pierwszy argument jest dopasowywany do tego wyrażenia regularnego. Jeśli porównanie jest pomyślne a wyrażenie regularne korzysta z `\(' i `\)', to wyrażenie : zwraca część łańcucha dopasowaną tym podwyrażeniem. W przeciwnym zwracana jest liczba dopasowanych znaków. Jeśli porównanie zawiedzie, operator `:' zwraca łańcuch pusty jeśli w wyrażeniu regularnym użyto `\(' i `\)' lub zero w przeciwnym wypadku. Tylko pierwsza para nawiasów `\(' i `\)' jest istotna dla zwracanej wartości. Dodatkowe mają znaczenie tylko przy grupowaniu operatorów wyrażenie regularnego. W wyrażeniu regularnym znaki `\+', `\?' i `\|' są operatorami dopasowującymi odpowiednio jedno lub więcej, zero lub jedno wystąpienie lub alternatywy rozłączne. Pochodzące z SunOS i inne implementacje expr traktują je jak zwykłe znaki. POSIX dopuszcza oba zachowania.

match łańcuch regex
    Alternatywny sposóba porównywania wzorców. Jest to identyczne z `łańcuch : regex'.

substr łańcuch pozycja długość
    Zwraca łańcuch będący częścią łańcucha, zaczynającą się na pozycji i o długości najwyżej długość. Jeśli pozycja lub długość jest niedodatnie lub nienumeryczne, zwracany jest łańcuch pusty.

index łańcuch klasa-znakowa
    Zwraca pierwszą pozycję w łańcuchu gdzie znaleźć można pierwszy znak z klasy-znakowej. Jeśli nie znaleziono żadnego znaku z klasy-znakowej, zwraca 0.

length łańcuch
    Zwraca długość łańcucha.

quote token
    Interpretuje token jako łańcuch, nawet jeśli jest on słowem kluczowym, jak match lub operatorem jak `/'. Umożliwia to testowanie `expr length quote "$x"' lub `expr quote "$x" : '.*/\(.\)'' i otrzymanie prawidłowego wyniku nawet jeśli wartością $X będzie, na przykład, `/' czy `index'. Ten operator jest rozszerzeniem GNU. Jest wyłączany, jeśli ustawiona jest zmienna środowiska POSIXLY_CORRECT.

Chcąc, by expr interpretował słowa kluczowe jako łańcuchy należy użyć operatora quote.

  Wyrażenia numeryczne
expr obsługuje zwyczajowe operatory numeryczne, w kolejności rosnącego priorytetu. Operatory łańcuchowe (poprzednia sekcja) mają niższy priorytet, zaś łączniki (connectives) (następna sekcja) wyższy.

+, -
    Dodawanie i odejmowanie. Obydwa argumenty są rzutowane na liczby. Jeśli to niemożliwe, pojawia się błąd.

*, /, %
    Mnożenie, dzielenie, reszta z dzielenia. Obydwa argumenty są rzutowane na liczby. Jeśli to niemożliwe, pojawia się błąd.

  Relacje
expr obsługuje zwyczajowe łączniki i relacje logiczne. Mają one wyższy priorytet niż operatory łańcuchowe lub numeryczne, opisane w poprzednich sekcjach. Oto ich lista, poczynając od operatorów o najmniejszym priorytecie.

|   Zwraca swój pierwszy argument w wypadku gdy jest niezerowy i niepusty, lub drugi w przeciwnym wypadku. Jest to zwykła operacja `or'.

&   Zwraca swój pierwszy argument w wypadku gdy żaden z argumentów nie jest zerowy ani pusty. W przeciwnym wypadku zwraca zero.

<, <=, =, ==, !=, >=, >
    Porównuje argumenty i zwraca 1 jeśli relacja jest prawdziwa lub zero w przeciwnym wypadku. (== jest synonimem =.) expr próbuje rzutować obydwa argumenty na liczby i dokonać porównania numerycznego; jeśli to zawiedzie, próbuje porównania leksykalnego.

Nawiasy są używane zazwyczaj do grupowania. Słowa kluczowe nie mogą być używane jako napisy.

  OPCJE
Gdy uruchomi się GNU expr z jednym argumentem, rozpoznawane są następujące opcje:

--help
    Wyświetla informację o stosowaniu programu i dostępnych opcjach, kończy pracę.

--version
    Wyświetla numer wersji programu i kończy pracę.

PRZYKŁADY
Kilka przykładów, łącznie z cytowaniem metaznaków powłoki: Dodanie 1 do zmiennej powłokowej, w powłoce zgodnej z powłoką Bourne'a: a:

     a=`expr $a + 1`

Poniższe polecenie może zostać użyte do wydrukowania niekatalogowej części nazwy pliku, przechowywanej w zmiennej a (część ta nie powinna zawierać `/'):

     expr $a : '.*/\(^.*\)' '^|' $a

Zauważ cytowane metaznaki powłoki.

Przykład pokazujący, że `\+' jest operatorem:

     expr aaa : 'a\+'
     => 3

Nieco innych:

     expr abc : 'a\(.\)c'
     => b
     expr index abcdef cz
     => 3
     expr index index a
     error--> expr: syntax error
     expr index quote index a
     => 0

KOD ZAKOŃCZENIA
expr zwraca następujący kod zakończenia:

0   jeśli wyrażenie nie jest ani null, ani 0.

1   jeśli wyrażenie jest null lub 0,

2   dla nieprawidłowych wyrażeń.

ZGŁASZANIE BŁĘDÓW
Błędy proszę zgłaszać, w jęz.ang., do <bug-sh-utils@gnu.org>.

COPYRIGHT
Copyright © 1999 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

ZOBACZ TAKŻE
dc(1), test(1), sh-utils(1).

OD TŁUMACZA
Zaktualizowano i poszerzono wg dokumentacji Texinfo dla narzędzi powłokowych GNU wersji 2.0.