Jednou z nejběžnějších aritmetických operací při psaní Bash skriptů je inkrementace a dekrementace proměnných. To se nejčastěji používá ve smyčkách jako čítač, ale může se vyskytnout i jinde ve skriptu.
Zvyšování a snižování znamená přičítání nebo odečítání hodnoty (obvykle 1
), respektive z hodnoty číselné proměnné. Aritmetické rozšíření lze provést pomocí dvojitých závorek ((...))
a $((...))
nebo pomocí let
vestavěný příkaz.
V Bash existuje několik způsobů, jak zvýšit/snížit proměnnou. Tento článek vysvětluje některé z nich.
Pomocí +
a -
Operátoři #
Nejjednodušší způsob, jak zvýšit/snížit proměnnou, je pomocí +
a -
operátory.
i=$((i+1))
((i=i+1))
let "i=i+1"
i=$((i-1))
((i=i-1))
let "i=i-1"
Tato metoda umožňuje zvýšit/snížit proměnnou o libovolnou hodnotu.
Zde je příklad zvýšení proměnné v rámci until
smyčka:
i=0
until [ $i -gt 3 ]
do
echo i: $i
((i=i+1))
done
i: 0
i: 1
i: 2
i: 3
+=
a -=
Operátoři #
Kromě výše vysvětlených základních operátorů poskytuje bash také operátory přiřazení +=
a -=
. Tyto operátory se používají ke zvýšení/snížení hodnoty levého operandu o hodnotu zadanou za operátorem.
((i+=1))
let "i+=1"
((i-=1))
let "i-=1"
V následujícím while
smyčky, snižujeme hodnotu i
proměnná o 5
.
i=20
while [ $i -ge 5 ]
do
echo Number: $i
let "i-=5"
done
Number: 20
Number: 15
Number: 10
Number: 5
Použití ++
a --
Operátoři #
++
a --
operátory inkrementují a dekrementují svůj operand o 1
a vrátí hodnotu.
((i++))
((++i))
let "i++"
let "++i"
((i--))
((--i))
let "i--"
let "--i"
Operátory lze použít před nebo za operandem. Jsou také známé jako:
- Přírůstek předpony:
++i
- snížení předpony:
--i
- přírůstek postfixu:
i++
- postfixové snížení:
i--
Předponové operátory nejprve zvýší/sníží operátory o 1
a poté vrátit novou hodnotu operátorů. Na druhou stranu postfixové operátory vracejí hodnotu operátorů předtím, než byla zvýšena/snížena.
Pokud chcete proměnnou pouze inkrementovat/dekrementovat, pak není rozdíl, pokud použijete operátor prefix nebo postfix. Je rozdíl pouze v případě, že je výsledek operátorů použit v nějaké jiné operaci nebo je přiřazen jiné proměnné.
Následující příklady ukazují, jak ++
operátor funguje, když je použit před a za svým operátorem:
x=5
y=$((x++))
echo x: $x
echo y: $y
x: 6
y: 5
x=5
y=$((++x))
echo x: $x
echo y: $y
x: 6
y: 6
Níže je uveden příklad, jak použít postfixový inkrementor ve skriptu bash:
#!/bin/bash
i=0
while true; do
if [[ "$i" -gt 3 ]]; then
exit 1
fi
echo i: $i
((i++))
done
Nevýhodou použití těchto operátorů je, že proměnnou lze zvýšit nebo snížit pouze o 1
.
Závěr č.
Zvyšování a snižování proměnných v Bash lze provádět mnoha různými způsoby. Ať už použijete jakoukoli metodu, výsledek je stejný.
Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.