Arithmetika yn Bash

Hoe kinne jo berjochten oan in bash skript taheakje

Hoewol't Bash in skripte taal is, hat it hast alle mooglikheden fan in algemiene doelprogramma-taal. Dit befettet arithmetike funksjes. Der binne in oantal syntaksopsjes dy't jo brûke kinne om arithmetyske evaluaasje fan in ekspresje te bewurkjen. Faaks is de lêsberste ien it kommando litte. Bygelyks

lit "m = 4 * 1024"

sil 4 kear 1024 berekkenje en it resultaat oantsjutte nei de fariabele "m".

Jo kinne it resultaat printsje troch in echo- oanfetting ta te foegjen:

lit "m = 4 * 1024" echo $ m

Jo kinne dit útfiere fan 'e kommandorigel troch te gean nei de folgjende koade:

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

Jo kinne ek in bestân meitsje mei de Bash-kommando's, yn hokker gefal moatte jo in rigel taheakje oan 'e boppekant fan it bestân dat it programma beskriuwt dat de koade útfiere moat. Bygelyks:

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

It útsetten fan de útfierberekp is yn / bin / bash . Jo moatte ek de tagongsrjochten fan jo skripttriem ynstelle, sadat it útfierber is. Asjebleaft de scripttriemnamme is script1.sh , kinne jo de tagongsrjochten ynstelle om de triem útfiere te meitsjen mei it kommando:

chmod 777 script1.sh

Dêrnei kinne jo it mei it kommando útfiere:

./script1.sh

De beskikbere arithmetike operaasjes binne fergelykber mei dy yn standert programmearringen lykas Java en C. Neist de multiplikaasje, lykas hjirboppe yllustrearret, brûk jo oanfolling:

lit "m = a + 7"

of subtraction:

lit "m = a - 7"

of divyzje:

lit "m = a / 2"

of modulo (de rêst nei in integer divyzje):

lit "m = a% 100"

As in operaasje tapast wurdt op deselde fariabele wêrnei it resultaat oanbean is, kinne jo de standert arithmetyske koartsjinningsoperators brûke, ek ferwidere as ferplichtingsbetellers. Bygelyks, foar oanfolling hawwe wy:

lit "m + = 15"

dy't lykweardich is "m = m + 15". Foar subtraction hawwe wy:

lit "m - = 3"

dy't lykweardich is "m = m - 3". Foar divyzje hawwe wy:

lit "m / = 5"

dat is lykwichtich "m = m / 5". En foar modulo hawwe wy:

lit "m% = 10"

dat is lykwols "m = m% 10".

Dêrneist kinne jo gebrûk meitsje fan de ynkommens- en besparringbetellers :

lit "m ++"

is lyk oan "m = m + 1". En

lit "m--"

is lykwichtlik "m = m - 1".

En dêrnei is de ternary "fraksmark-kolon" -operator, dy't ien fan twa wearden weromkomt, ôfhinklik fan oft de spesifike steat wier is of wier is. Bygelyks

lit "k = (m <9)" 0: 1 "

De rjochterkant fan dizze oplaachnotaasje beoardielet op "0" as de fariabele "m" minder dan 9 is. Oars jildt it oan 1. Dit betsjut dat de fariabele "k" as "0" as "m" as minder is dan 9 en "1" oars.

De algemiene foarm fan de fraach markkolonoperator is:

betingst? wearde-if-true: wearde-if-false

Floating Point arithmetyk yn Bash

De letbedriuw wurket allinich foar integer arithmetyk. Foar flitende punt arithmetyk kinne jo brûke bygelyks de GNU bc-kalkulator as yllustrearre yn dit foarbyld:

echo "32.0 + 1,4" | bc

De "pipe" -operator "|" passet de arithmetike ekspresje "32.0 + 1.4" nei de bc-calculator, wêrtroch it echte nûmer weromkommt. It echobehear druk it resultaat nei de standertútfier.

Alternatyf Syntaks foar arithmetyk

Backtaksjes (rinnende single quotes) kinne brûkt wurde om in arithmetike ekspresje te evaluearjen lykas yn dit foarbyld:

echo `expr $ m + 18`

Dit sil 18 tafoegje oan de wearde fan 'e fariabele "m" en druk dan it resultaat út.

Om de kompute wearde te jaan oan in fariabele kinne jo it lykweardich teken brûke sûnder spaasjes om it hinne:

m = `ekspr $ m + 18`

In oare manier om arithmetika-ekspresjes te beoardieljen is dûbele klompenis te brûken. Bygelyks:

((m * = 4))

Dit sil de wearde fan 'e fariabele "m" kwadrimpelje.

Neist arithmetike evaluaasje jout de bash-shell oare programmearbouken, lykas foar-loops , wylst-loops , kondysjes , funksjes en subroutines .