Bash aritmetisk operasjon

Bash aritmetisk operasjon
Å utføre aritmetiske operasjoner i bash ligner ikke på andre standardprogrammeringsspråk. En av begrensningene i bash er at den ikke kan håndtere flytende punkt eller dobbelt tall som andre skriptspråk. Et annet kommandoverktøy brukes i bash for å løse dette problemet. Ulike typer aritmetiske operasjoner vises i denne opplæringen ved å bruke forskjellige eksempler.

Eksempel - 1: Bruke 'expr' -kommando

Den eldste kommandoen for å utføre aritmetiske operasjoner i bash er 'expr'. Denne kommandoen kan kun fungere med heltallverdier og skriver ut utgangen direkte i terminalen. Du må bruke plass med hver operand når du vil bruke 'expr'Kommando om å utføre matematiske operasjoner. Lag en bash -fil som heter expr.bash med følgende skript for å vite bruken av 'expr'Kommando.

#!/bin/bash
# Fungerer som strengen
expr '10 + 30 '
# Fungerer som strengen
expr 10+30
#Perform tillegget
expr 10 + 30
#Finn ut resten av verdien
expr 30 % 9
#Bruke ekspress med backtick
myVal1 = 'expr 30/10'
Echo $ myVal1
#Bruke Expr innen kommandoskift
MyVal2 = $ (Expr 30 - 10)
Echo $ myVal2

Kjør følgende kommando for å utføre skriptet.

$ bash expr.bash

Produksjon:
Utgangen viser at aritmetiske operatører bare fungerte når plass brukes med hver numerisk verdi og ingen enkelt sitat brukes med expr kommando. Du kan også tilordne utdataene til expr kommando inn i en variabel og skriv ut variabelen senere ved å bruke backtick eller Kommandoerstatning. 30/10 beregnes ved å bruke backtick og 30-10 beregnes ved å bruke Kommandoerstatning.

Eksempel - 2: Bruke 'la' kommandoen

'la' er en annen innebygd kommando for å utføre aritmetiske operasjoner i bash. 'la' Kommando kan ikke skrive ut utgangen til terminalen uten å lagre verdien i en variabel. Men 'La oss' Kommando kan brukes til å fjerne de andre begrensningene i 'expr' kommando. Lag en bash -fil som heter la.bash med følgende skript for å vite bruken av 'la' kommando.

#!/bin/bash
# Multipliser 9 med 8
La val1 = 9*3
Echo $ val1
# Deling 8 med 3
La "Val2 = 8 /3"
Echo $ val2
# Trekke 3 fra 9
La val3 = 9-3
Echo $ val3
# Bruke økning
La val4 = 7
La Val4++
Echo $ val4
# Bruke argumentverdi i aritmetisk operasjon
La "Val5 = 50+$ 1"
Echo $ val5

Kjør følgende kommando for å utføre skriptet.

$ bash let.Bash 50

Produksjon:

Utgangen viser det 'La oss' Kommandoen er mer fleksibel enn 'expr'Kommando. Du kan evaluere ethvert aritmetisk uttrykk med eller uten sitater. Men du kan ikke bruke plass innenfor noe matematisk uttrykk. Øknings- eller reduksjonsoperatøren kan brukes i 'la'Kommando. Hvordan den aritmetiske operasjonen kan gjøres med argumentverdiene ved bruk av de 'la'Kommando vises i den siste delen av eksemplet.

Eksempel - 3: Bruke doble parenteser

Enhver aritmetisk operasjon kan gjøres i bash uten å bruke noen kommando. Her brukes doble parenteser til å utføre de aritmetiske oppgavene, og å bruke doble parenteser for å utføre matematiske uttrykk er mer fleksibel enn kommandoen som 'expr'Eller'la'. Lag en bash -fil som heter DBL.BASH med følgende skript for å teste aritmetiske operasjoner ved å bruke doble parenteser.

#!/bin/bash
# Beregn det matematiske uttrykket
Val1 = $ ((10*5+15))
Echo $ val1
# Bruke post- eller pre inkrement/decrement -operatør
((Val1 ++))
Echo $ val1
VAL2 = 41
((--Val2))
Echo $ val2
# Bruke korthåndsoperatør
((val2 += 60)))
Echo $ val2
# Deling 40 med 6
((val3 = 40/6)))
Echo $ val3

Kjør følgende kommando for å utføre skriptet.

$ bash dbl.bash

Produksjon:

Utgangen viser at doble parenteser kan utføre ethvert matematisk uttrykk med plass eller uten plass, og du kan også bruke økning/dekrement og shorthand -operatører i uttrykk for doble parenteser.

Eksempel - 4: Bruke 'BC' -kommando for float eller doble tall

En av de viktigste begrensningene for de ovennevnte måtene å utføre aritmetiske operasjoner i bash er at 'expr'Eller'la'eller Doble parenteser Uttrykk er ikke i stand til å produsere flytende punkt eller dobbelttall. Utgangen fra divisjonsoperasjoner av eksemplene ovenfor er heltall. 'BC'Kommando kan brukes til å løse dette problemet, og det fungerer som en grunnleggende kalkulator for Linux -operativsystemet. Lag en bash -fil som heter BC.bash med følgende skript for å vite bruken av 'BC' Kommando i aritmetiske operasjoner.

#!/bin/bash
# Deling 55 med 3 kun med BC
ekko "55/3" | BC
# Deling 55 med 3 med BC og -l -alternativ
ekko "55/3" | BC -L
# Deling 55 med 3 med BC og skalaverdi
ekko "skala = 2; 55/3" | BC

Kjør følgende kommando for å utføre skriptet.

$ BASH BC.bash

Produksjon:
Utgangen viser at det enkle 'BC'Kommando produserer heltallverdi som andre alternativer når ethvert divisjonsuttrykk blir utført. 'BC -L'Kommando genererer den nøyaktige utføringen fra divisjonen, og du kan begrense den brøkdelte delen ved å bruke skala verdi. Her, skala = 2 benyttes. Så utgangen viser 2 sifre etter desimalpunktet.

Eksempel-5: Bruke Printf-kommandoen for float eller dobbeltnummer

'printf'Kommando er en annen måte å jobbe med brøkdata. Denne kommandoen kan brukes til å generere den flytende punktverdien mer effektivt enn 'BC' -kommandoen etter den aritmetiske operasjonen. Denne kommandoen kan også brukes til å beregne kraften til et tall. Bruken av 'printf'Kommando for forskjellige aritmetiske operasjoner har vist i dette eksemplet. Lag en bash -fil som heter prn.bash Med følgende skript for å sjekke bruken av 'Printf' -kommandoen for brøkutgangen til delingen av to tall.

#!/bin/bash
# Ta utbytteverdien fra brukeren
Les -P "Angi utbytteverdien:" N1
# Ta divisorverdien fra brukeren
Les -P "Angi divisorverdien:" N2
# Finn divisjonen som bruker 'Echo' og 'BC'
ekko "skala = 2; $ n1/$ n2" | BC
# Finn divisjonen ved å bruke 'Printf'
printf "%.2f \ n "" $ ((10 ** 2*$ n1/$ n2)) e-2 "

Kjør følgende kommando for å utføre skriptet.

$ bash prn.bash

Produksjon:
Følgende utdata viser at divisjonsverdien generert av 'BC' og 'Printf' -kommandoer med to heltallstall er de samme.

Følgende utdata viser at når utbytteverdien er et flytende punktnummer, genererte divisjonsverdien generert av 'BC' -kommandoen riktig, men 'Printf' -kommandoen genererte en feil.

Lag en bash -fil som heter Prn2.bash Med følgende skript for å kjenne bruken av 'Printf' -kommandoen for riktig brøkutgang når utbytteverdien er et flytende punktnummer.

#!/bin/bash
# Ta utbytteverdien fra brukeren
Les -P "Angi utbytteverdien:" N1
# Ta divisorverdien fra brukeren
Les -P "Angi divisorverdien:" N2
# Finn divisjonen som bruker 'Printf', 'Echo' og 'BC'
printf "%.2f \ n "'Echo $ n1/$ n2 | bc -l'

Kjør følgende kommando for å utføre skriptet.

$ bash prn2.bash

Produksjon:
Utgangen viser at "printf" med "BC" -kommandoen genererer riktig utgang.

Eksempel-6: Bruke AWK-kommandoen for aritmetisk operasjon

Å bruke "AWK" -kommandoen er en annen måte å utføre den aritmetiske operasjonen som kan generere utgang riktig for flytende punkttall. Den aritmetiske operasjonene som bruker 'AWK' -kommandoen uten formatering og med formatering har vist i dette eksemplet. Lag en bash -fil som heter awk.bash Med følgende skript for å sjekke bruken av 'AWK' -kommandoen for aritmetisk operasjon.

#!/bin/bash
# Initialiser utbytteverdien
N1 = 90
# Initialiser divisorverdien
N2 = 43
# Skriv ut utgangen uten å danne
awk "begynn print $ n1/$ n2"
# Skriv ut utgangen med formatering
awk "begynn printf"%.2f \ n ", $ n1/$ n2"

Kjør følgende kommando for å utføre skriptet.

$ bash awk.bash

Produksjon:
Utgangen viser at 'AWK' -kommandoen kan generere passende brøkutgang.

Eksempel-7: Beregn prosentandelen av en verdi

Noen ganger må vi beregne prosentvis verdien av bestemte kriterier. Prosentandelen kan beregnes i bash ved å bruke kommandoen 'Printf' og 'Echo' -kommandoen. Anta at vi må finne ut prosentandelen av beståtte studenter på en eksamen basert på det totale antallet studenter og totalt bestått studenter. Løsningen på dette problemet har vist i dette eksemplet. Lag en bash -fil med følgende skript for å beregne prosentvis verdien av beståtte studenter som bruker 'Printf' -kommandoen.

#!/bin/bash
# Ta det totale antallet studenter fra brukeren
Les -P "Totalt antall studenter:" Total_std
# Ta det totale antallet av passerte studenter fra brukeren
Les -P "Totalt antall beståtte studenter:" bestått_std
# Beregn prosentandelen av passerte studenter
printf "prosentandelen av bestått studenter: %.2f %% \ n "" $ ((10 ** 3 * 100 * $ bestått_std/$ total_std)) e-3 "

Kjør følgende kommando for å utføre skriptet.

$ bash prosent.bash

Produksjon:
Produksjonen viser prosentandelen av forbipasserende studenter basert på det totale antallet studenter og bestått studenter.

Konklusjon

Bruken av forskjellige aritmetiske operatører i bash og måtene å utføre de aritmetiske operasjonene ved hjelp av forskjellige kommandoer har vist i denne opplæringen ved å bruke flere eksempler for å hjelpe Bash -brukerne.