Scroll to navigation

EXPR(1) Narzędzia powłokowe GNU 2.0 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.

Alternatywny sposóba porównywania wzorców. Jest to identyczne z `łańcuch : regex'.
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.
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.
Zwraca długość łańcucha.
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:

Wyświetla informację o stosowaniu programu i dostępnych opcjach, kończy pracę.
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.

FSF maj 2000