Aritmetika v Bash

Jak přidat výpočty do skriptu Bash

Ačkoli Bash je skriptovací jazyk, má skoro všechny schopnosti obecného programovacího jazyka. To zahrnuje aritmetické funkce. Existuje řada možností syntaxe, které můžete použít k vyvolání aritmetického hodnocení výrazu. Možná nejčtenější je příkaz let . Například

nechte "m = 4 * 1024"

vypočítá 4 krát 1024 a přiřadí výsledek proměnné "m".

Výsledek můžete vytisknout přidáním příkazu echo :

nechte "m = 4 * 1024" echo $ m

Můžete to vyzkoušet z příkazového řádku zadáním následujícího kódu:

let "m = 4 * 1024"; echo $ m

Můžete také vytvořit soubor obsahující příkazy Bash, v takovém případě byste měli přidat řádek v horní části souboru, který určuje program, který má kód spouštět. Například:

#! / bin / bash nechte "m = 4 * 1024" echo $ m

za předpokladu, že spustitelný soubor Bash je umístěn v / bin / bash . Také je třeba nastavit oprávnění souboru skriptu tak, aby byla spustitelná. Za předpokladu, že název souboru skriptu je script1.sh , můžete nastavit oprávnění k vytvoření souboru příkazem:

chmod 777 script1.sh

Poté jej můžete provést příkazem:

./script1.sh

Dostupné aritmetické operace jsou podobné jako ve standardních programovacích jazycích, jako je Java a C. Kromě násobení, jak je ilustrováno výše, použijete doplnění:

let "m = a + 7"

nebo odčítání:

nechte "m = a - 7"

nebo divize:

nechte "m = a / 2"

nebo modulo (zbytek po celé divizi):

let "m = a% 100"

Při použití operace na stejnou proměnnou, k níž je výsledek přiřazen, můžete použít standardní aritmetické operátory přiřazení zkratky, také nazývané operátory přiřazení kombinací. Například pro přidání máme:

let "m + = 15"

což odpovídá "m = m + 15". Pro odečtení máme:

let "m - = 3"

což odpovídá "m = m - 3". Pro rozdělení máme:

let "m / = 5"

což odpovídá "m = m / 5". A pro modulo máme:

nechte "m% = 10"

což odpovídá "m = m% 10".

Navíc můžete použít přírůstkové a dekrementační operátory:

let "m ++"

je ekvivalentní k "m = m + 1". A

nechte "m--"

je ekvivalentní k "m = m - 1".

A pak je ternární operátor "otazník-dvojtečka", který vrací jednu z dvou hodnot v závislosti na tom, zda je daná podmínka pravdivá nebo nepravdivá. Například

let "k = (m <9)? 0: 1"

Pravá strana tohoto příkazu přiřazení hodnotí hodnotu "0", pokud je proměnná "m" menší než 9. V opačném případě se vyhodnotí na hodnotu 1. To znamená, že proměnná "k" je přiřazena "0", pokud je "m" než 9 a "1" jinak.

Obecná forma operátora otazníků a kolon je:

podmínka? hodnota-if-true: hodnota-if-false

Plovoucí aritmetický bod v Bash

Operátor let pracuje pouze pro celočíselnou aritmetiku. Pro aritmetiku s plovoucí čárou můžete použít například kalkulačku GNU bc, jak je ilustrováno v tomto příkladu:

echo "32,0 + 1,4" | před naším letopočtem

Operátor "potrubí" | "" předává aritmetický výraz "32.0 + 1.4" do kalkulačky bc, která vrací skutečné číslo. Příkaz echo vytiskne výsledek na standardní výstup.

Alternativní syntaxe pro aritmetiku

Základy (zadní jednoduché uvozovky) lze použít k vyhodnocení aritmetického výrazu jako v tomto příkladu:

echo `expr $ m + 18`

Přidá se 18 na hodnotu proměnné "m" a vytiskněte výsledek.

Chcete-li přiřadit hodnotu výpočtu proměnné, můžete použít rovnítko bez mezery kolem ní:

m = "expr $ m + 18"

Dalším způsobem, jak vyhodnotit aritmetické výrazy, je použít dvojité závorky. Například:

((m * = 4))

Tím se čtyřnásobek hodnoty proměnné "m".

Kromě aritmetického vyhodnocení poskytuje shell Bash také další programové konstrukty, jako jsou smyčky pro smyčky , smyčky , podmnožiny , funkce a podprogramy .