GNU/Linux >> Znalost Linux >  >> Linux

Počítejte v linuxovém shellu s GNU bc

Většina systémů POSIX je dodávána s GNU bc, což je libovolný jazyk pro přesné numerické zpracování. Jeho syntaxe je podobná C, ale také podporuje interaktivní provádění příkazů a zpracování dat ze standardního jazyka (stdin ). Z toho důvodu je to často odpověď na otázku:"Jak mám dělat matematiku v prostředí Linux?" Tento styl odpovědi je běžný online:

$ echo "1+1" | bc
2

I když to dokonale platí, jen málo uživatelů tvrdí, že je to elegantní ve srovnání s něčím intuitivnějším, jako například:

$ 1+1  #this does not work
2

Interaktivní režim je o něco jednodušší:

$ bc 
1+1
2
quit
$

Interaktivní režimy však ne vždy odpovídají požadovanému a intuitivnímu pracovnímu postupu něčeho jednoduchého, jako je pouhé zadávání požadovaného výpočtu. K tomu doporučuji Bluebatovu kalkulačku v čistém Bash.

To, co bc ve skutečnosti poskytuje, je matematický jazyk pro pokročilé výpočty.

Pokročilé funkce s mathlib

Samostatně bc poskytuje základní matematické funkce. Můžete je vyzkoušet v interaktivním režimu:

$ bc
3^2
9
(3^2)*(9)/3
27

Použijte --mathlib možnost získat pokročilé funkce, včetně sinus, kosinus, tangens a další. V interaktivním režimu si některé z nich můžete vyzkoušet. Zde je kosinus 90:

c(90)
-.44807361612917015236

Sinus 9:

s(9)
.41211848524175656975

Vytváření vlastních funkcí bc

Můžete si také vytvořit své vlastní funkce v Bc. Definice funkcí začínají define klíčové slovo a jsou uzavřeny složenými závorkami. Zde je jednoduchá funkce zadaná do interaktivní relace, která vrací jakékoli zadané číslo:

$ bc
define echo(n) {
  return (n);
}

Ve stejné interaktivní relaci to vyzkoušejte:

echo(2)
2
echo(-2)
-2

příkazy If v bc

Jazyk bc má také různé ovládací příkazy, z nichž nejjednodušší je if/else. Syntaxe se může na první pohled zdát povědomá, ale v tom, jak se zachází se složenými závorkami, existují jemnosti. Všimněte si, že jiné klauzule if-příkazu je uzavřena ve složených závorkách, zatímco then klauzule není, ale obě jsou zakončeny středníkem. Zde je funkce k nalezení absolutní hodnoty čísla n :

define abso(n) {
  if ( n > 0 ) return (n);
  { return (-n); }
}

Ve stejné interaktivní relaci to vyzkoušejte:

abso(-5)
5
abso(5)
5

Import dat do bc

Práce v interaktivní relaci je přijatelná pro rychlé výpočty a experimentování, ale po ukončení ztratíte svá data a je obtížné je upravovat, když uděláte chyby. Naštěstí může bc načítat proměnné a funkce z externích souborů.

Zde je soubor obsahující dvě proměnné (sol a foo ) a vlastní abso funkce k nalezení absolutní hodnoty:

sol=299792458

foo=42

define abso(n) {
  if ( n > 0 ) return (n);
  { return (-n); }
}

Uložte to do souboru s názvem bcvars.bc , takže jej můžete importovat do interaktivní relace bc:

$ bc bcvars.bc
foo
42
sol
299792458
abso(-23)
23

Zlepšete svou matematiku pomocí bc

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

Jazyk bc je relativně jednoduchý, za předpokladu, že znáte dost matematiky na sestavení rovnice pro cokoliv, čeho se snažíte dosáhnout. Zatímco bc ve výchozím nastavení poskytuje užitečné základní funkce a umožňuje vám vytvářet si vlastní, můžete si snížit zátěž tím, že se postavíte na ramena obrů. Soubory nabité novými funkcemi, jak pro základy matematiky, tak pro specifické úlohy (například výpočet složeného úroku), jsou k dispozici na stránce GNU bc a k dispozici je úplná dokumentace pro bc.

Pokud máte zájem dělat lepší matematiku v shellu, zkuste bc. Neudělá z vás matematického génia, ale může vám to usnadnit stát se jím.


Linux
  1. Plánování úloh pomocí linuxového příkazu cron

  2. Naplánujte si úlohu pomocí příkazu Linux at

  3. Analyzujte linuxové jádro pomocí ftrace

  1. Rozdělte disk na Linuxu pomocí GNU Parted

  2. Udělejte více na příkazovém řádku Linuxu s GNU Parallel

  3. Základy Linuxu:Jak stahovat soubory do prostředí pomocí Wget

  1. Jak změnit výchozí prostředí v Linuxu

  2. Jak přejmenuji soubory s mezerami pomocí prostředí Linux?

  3. Šablony s Linuxem ve skriptu Shell?