EXPR(1)

JMÉNO
expr - vyhodnotí výraz

POUŽITÍ
expr výraz...
expr {--help,--version}

POPIS
Tato dokumentace není dále udržována a může být nepřesná nebo neúplná. Autoritativním zdrojem je Texinfo dokumentace.

Tato manuálová stránka popisuje GNU verzi příkazu expr. Příkaz expr vyhodnotí výraz a vypíše výsledek na standardní výstup. Každé slovo (token) ve výrazu musí být zadáno jako samostatný parametr. Operandy ve výrazech jsou buď čísla nebo řetězce. Psaní řetězců do uvozovek nebo apostrofů příkaz expr sám nevyžaduje, ale jejich použití může být nezbytné, aby speciální znaky v řetězcích neinterpretoval shell. Příkaz expr automaticky převádí operandy ve výrazech na celá čísla nebo řetězce podle toho, jaké na ně mají být aplikovány operace.

Příkaz expr rozpoznává následující binární operátory (zde seřazené od nejnižší po nejvyšší prioritu):

|   Pokud první argument není ani prázdný řetězec (null) ani 0, je výsledkem první argument, jinak je výsledkem druhý argument. Obvykle se používá jako logické `nebo'.

&   Jestliže ani jeden argument není ani prázdný řetězec (null) ani 0, je výsledkem první argument, jinak je výsledkem 0.

<  <=  =  ==  !=  >=  >
    Pokusí se převést oba argumenty na čísla a provést číselné porovnání; jestliže převod na čísla není možné uskutečnit, provede abecední porovnání. Vrátí 1, jestliže je podmínka porovnání splněna, jinak vrátí 0. Operátor == je synonymem pro =.

+  -
    Aritmetické operace sčítání a odčítání. Oba argumenty jsou napřed převedeny na čísla; je chybou, jestliže není možné převod na čísla provést.

*  /  %
    Aritmetické operace násobení, dělení a zbytek po celočíselném dělení, jako v jazyku C. Oba argumenty jsou napřed převedeny na čísla; je chybou, jestliže není možné převod na čísla provést.

:   Porovnání řetězce s regulární výrazem. Oba argumenty jsou převedeny na řetězce a na začátek druhého je automaticky přidán znak `^'. Potom je první argument porovnán s druhým, který je interpretován jako regulární výraz. Pokud první řetězec vyhovuje regulárnímu výrazu, pak je porovnání úspěšné. V tomto případě, jestliže je část druhého operandu uzavřena mezi `\(' a `\)', bude výsledkem ta část prvního řetězce, která vyhovovala části regulárního výrazu mezi `\(' a `\)', jinak je výsledkem číslo udávající, kolik znaků prvního řetězce vyhovovalo celému regulárnímu výrazu. Pokud porovnání úspěšné nebylo, pak jestliže v regulárním výrazu bylo `\(' a `\)', je výsledkem prázdný řetězec, jinak je výsledkem 0. Může být použit nejvýše jeden pár `\(' a `\)'.

Navíc jsou rozpoznávána následující klíčová slova:

match řetězec regex
    Alternativní zápis porovnání s regulárním výrazem. Totéž jako ``řetězec : regex''.

substr řetězec pozice délka
    Vrátí podřetězec zadaného řetězce začínající na zadané pozici a nejvýše o zadané délce. Jestliže pozice a délka nejsou kladná čísla, vrátí prázdný řetězec.

index řetězec seznam-znaků
    Vrátí první pozici v řetězci, na které je některý ze znaků uvedených v seznamu-znaků. Jestliže v řetězci není žádný znak ze seznamu-znaků, vrátí 0.

length řetězec
    Vrátí délku řetězce.

Pro vyznačení pořadí vyčíslování je možné použít kulaté závorky. Klíčová slova nemohou být použita jako řetězce.

  VOLBY
Když je GNU příkaz expr vyvolán právě s jedním parametrem, jsou rozpoznávány následující volby:

--help
    Vypíše návod k použití na standardní výstup a bezchybně skončí.

--version
    Vypíše číslo verze na standardní výstup a bezchybně skončí.

PŘÍKLADY

Přičtení jedničky do proměnné shellu a:

    a=`expr $a + 1`

Následující příklad může být použit pro vypsání poslední složky jména souboru uloženého v proměnné a (hodnota v a nemusí obsahovat `/'):

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

-- metaznaky shellu je nutné dávat do uvozovek či apostrofů.

Příkaz expr nastavuje následující kódy ukončení (exit status):

0 jestliže výsledek není ani prázdný řetězec ani 0,
1 jestliže výsledek je prázdný řetězec nebo 0,
2 pro chybné výrazy.