Aritmetiko en Bash

Kiel aldoni kalkulojn al Bash-skripto

Kvankam Bash estas skripta lingvo, ĝi havas sufiĉe multe ĉiujn kapablojn de ĝenerala programlingvo. Ĉi tio inkluzivas aritmetikajn funkciojn. Estas kelkaj sintaksaj opcioj, kiujn vi povas uzi por elvoki aritmetikan taksadon de esprimo. Eble la plej legebla estas la ordono. Ekzemple

lasu "m = 4 * 1024"

kalkulos 4 fojojn 1024 kaj donos la rezulton al la variablo "m".

Vi povas presi la rezulton aldonante eĥon- deklaron:

lasu "m = 4 * 1024" eĥo $ m

Vi povas provi ĉi tion de la komandlinio per eniranta la sekvan kodon:

lasu "m = 4 * 1024"; eĥo $ m

Vi ankaŭ povas krei dosieron enhavantan la Bash-komandojn, en kies kazo vi devus aldoni linion ĉe la supro de la dosiero, kiu specifas la programon, kiu devas ekzekuti la kodon. Ekzemple:

#! / bin / bash lasu "m = 4 * 1024" eĥo $ m

supozante ke la Bash-ejecutable situas / bin / bash . Vi ankaŭ bezonas agordi la permesojn de via skripto-dosiero tiel ke ĝi estas ezecutable. Supozante la skripton-dosiernomo estas script1.sh , vi povas agordi la permesojn por fari la dosieron ejecutable kun la komando:

chmod 777 script1.sh

Post tio vi povas ekzekuti ĝin per la komando:

./script1.sh

La disponeblaj aritmetikaj operacioj estas similaj al tiuj en normaj programlingvoj kiel Java kaj C. Krom multipliko, kiel montrita supre, vi uzas aldonon:

lasu "m = a + 7"

aŭ subtraho:

lasu "m = a - 7"

aŭ divido:

lasu "m = a / 2"

aŭ modulo (la resto post entjera divido):

lasu "m = al% 100"

Kiam operacio aplikiĝas al la sama variablo al kiu la rezulto estas atribuita, vi povas uzi la normajn aritmetikajn taĉmentajn komercajn operaciojn, ankaŭ nomitajn kombinitajn taskojn. Ekzemple, por aldono, ni havas:

lasu "m + = 15"

kiu samvaloras al "m = m + 15". Por subtraho ni havas:

lasu "m - = 3"

kiu samvaloras al "m = m - 3". Por divido ni havas:

lasu "m / = 5"

kiu samvaloras al "m = m / 5". Kaj por modulo, ni havas:

lasu "m% = 10"

kiu samvaloras al "m = m% 10".

Aldone, vi povas uzi la pliigon kaj dekreton- operatorojn:

lasu "m ++"

estas ekvivalenta al "m = m + 1". Kaj

lasu "m--"

estas ekvivalenta al "m = m - 1".

Kaj tiam estas la telefonisto "demando marko-punkto", kiu redonas unu el du valoroj laŭ se la specifita kondiĉo estas vera aŭ falsa. Ekzemple

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

La dekstra flanko de ĉi tiu farita deklaro taksas "0" se la variablo "m" estas malpli ol 9. Alie, ĝi taksas 1. Ĉi tio signifas ke la variablo "k" estas atribuita "0" se "m" estas malpli ol 9 kaj "1" alie.

La ĝenerala formo de la demando marko-kolonomo estas:

kondiĉo? valoro-se-vera: valoro-se-falsa

Aritmetiko en Flotaj Punktoj en Bash

La lasita operatoro nur funkcias por entjera aritmetiko. Por flosanta punkto-aritmetiko vi povas uzi ekzemple la GNU-bk-kalkulilon kiel ilustris en ĉi tiu ekzemplo:

eĥo "32.0 + 1.4" | bc

La "pipe" operatoro "|" pasas la aritmetikan esprimon "32.0 + 1.4" al la kalkulilo, kiu redonas la realan numeron. La eĥa komando presas la rezulton al la norma eligo.

Alternativa Sintakso por Aritmetiko

Backticks (reen unuopaĵoj) povas esti uzata por taksi aritmetikan esprimon kiel en ĉi tiu ekzemplo:

eĥo 'expr $ m + 18`

Ĉi tio aldonos 18 al la valoro de la variablo "m" kaj poste presi la rezulton.

Por asigni la kalkulalan valoron al variablo vi povas uzi la egalan signon sen spacoj ĉirkaŭ ĝi:

m = `expr $ m + 18`

Alia maniero por taksi aritmetikajn esprimojn estas uzi duoblajn paréntesis. Ekzemple:

((m * = 4))

Ĉi tio kvarobligos la valoron de la variablo "m".

Krom aritmetika takso, la Bash-ŝelo provizas aliajn programadajn konstruojn, kiel bukloj , bukloj , kondiĉoj , kaj funkcioj kaj subrutinoj .