GNU/Linux >> Znalost Linux >  >> Linux

Jak zvýšit a snížit proměnnou v Bash (počítadlo)

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ář.


Linux
  1. Jak udělat `hlavu` a `ocas` na vstupu odděleném nulou v Bash?

  2. Jak změnit název proměnné Bash ve smyčce a poté rozbalit změněný název?

  3. Jak vytvářet a volat funkce v Bash

  1. Jak otestuji, zda je proměnná číslo v Bash?

  2. Jak provést atomový přírůstek a načtení v C?

  3. Nefunguje přírůstek čítače ve smyčce Bash

  1. Jak programovat s Bash:Syntaxe a nástroje

  2. Jak přizpůsobit barvy a obsah bash v příkazovém řádku terminálu Linux

  3. Jak odstranit proměnnou pouze pro čtení v bash?