Expr
![]() 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ém | Unix a různé unixové systémy, IBM i |
Platforma | Multiplatformní |
Typ softwaru | pří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
[editovat | editovat zdroj]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
[editovat | editovat zdroj]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
[editovat | editovat zdroj]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
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku expr na anglické Wikipedii.
- ↑ Implementace nejdůležitějších GNU utilit do Windows
- ↑ Native Win32 ports of some GNU utilities [online]. unxutils.sourceforge.net. Dostupné online.
- ↑ IBM. IBM System i Version 7.2 Programming Qshell [online]. IBM [cit. 2020-09-05]. Dostupné online. (anglicky)
Související články
[editovat | editovat zdroj]Externí odkazy
[editovat | editovat zdroj]- 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