Expr

expr
Příklad použití příkazu expr pro vyhodnocení sečtení dvou čísel
Příklad použití příkazu expr pro vyhodnocení sečtení dvou čísel
VývojářRůzní vývojáři softwaru s otevřeným zdrojovým textem i komerční vývojáři
První vydání1979
Operační systémUnix a různé unixové systémy, IBM i
PlatformaMultiplatformní
Typ softwarupříkaz
Některá data mohou pocházet z datové položky.

expr je program pro prostředí příkazového řádku v operačním systému Unix a unixových operační systémech, který vyhodnocuje matematické výrazy a výsledek vypisuje na standardní výstup. Poprvé se objevil v Unix v7. Příkaz je také dostupný pro Microsoft Windows v sadě programů UnxUtils,[1] nativních portů běžných GNU unixových programů do Win32.[2] Příkaz expr byl také portován do operačního systému IBM i.[3]

Úvod

expr vyhodnocuje celočíselné nebo řetězcové výrazy, včetně regulárních výrazů pro vyhledávání vzorků v řetězci. Příkaz expr vyžaduje, aby každý prvek výrazu (operátor, konstanta, řetězec, atd.) byl zadán jako samostatný parametr (oddělený mezerami od ostatních prvků výrazu). Poměrně obtížný problém představuje zápis výrazu takovým způsobem, aby unixový shell neiterpretoval speciální znaky ve výrazu po svém.

Syntax

Syntax: expr výraz

Dostupné operátory:

  • pro celá čísla: sčítání, odčítání, násobení, dělení a modulo
  • pro řetězce: vyhledání vzorku v řetězci pomocí regulárního výrazu; v některých verzích: vyhledání podřetězce v řetězci (“index“), získání podřetězce (“substr“), délka řetězce (“length“)
  • pro obojí: porovnání (je rovno, není rovno, menší než, atd.)

Příklad

Následující příkaz ukazuje (nePOSIXový) příklad obsahující logické výrazy:

expr length "abcdef" "<" 5 "|" 15 - 4 ">" 8

Tento příklad vypíše číslo "1"; délka řetězce "abcdef" je 6, což není méně než 5 (takže výraz vlevo od | není pravdivý). Ale 15 minus 4 je 11, což je více než 8, takže výraz vpravo od | je pravdivý, díky čemuž bude výsledek logického nebo také pravdivý, což je reprezentováno hodnotou 1. Protože výraz neobsahuje chybu, návratový kód příkazu je nula.

Pro čistě aritmetické výpočty je často pohodlnější použít příkaz bc. Například:

echo "3 * 4 + 14 / 2" | bc

protože bc očekává, že přijme celý výraz bude tvořit jeden argument.

Při vytváření přenositelných skriptů se nesmí používat nestandardní rozšíření jako jsou operátory index, length, match a substr; porovnávání řetězců je dostupné, ale musí používat syntaxi podle „string : regexp“.

Odkazy

Reference

V tomto článku byl použit překlad textu z článku expr na anglické Wikipedii.

  1. Implementace nejdůležitějších GNU utilit do Windows
  2. Native Win32 ports of some GNU utilities [online]. unxutils.sourceforge.net. Dostupné online. 
  3. IBM. IBM System i Version 7.2 Programming Qshell [online]. IBM [cit. 2020-09-05]. Dostupné online. (anglicky) 

Související články

Externí odkazy

  • The Single UNIX Specification, Version 4 from The Open Group. [s.l.]: [s.n.] Kapitola expr: evaluate arguments as an expression – Shell and Utilities Reference. 
  • expr invocation in GNU coreutils manual

Média použitá na této stránce

Expr-example.png
Autor: Comrade-yutyo, Licence: CC BY-SA 4.0
Example of expr command for doing basic summation