Аритметика в Баш

Как да добавите изчисления към скрипт Bash

Въпреки че Баш е скриптов език, той има почти всички възможности на език за програмиране с общо предназначение. Това включва аритметични функции. Има няколко опции за синтаксис, които можете да използвате, за да предизвикате аритметична оценка на израз. Може би най-четимата е командата " let" . Например

нека "m = 4 * 1024"

ще изчисли 4 пъти 1024 и ще зададе резултата на променливата "m".

Можете да отпечатате резултата, като добавите израз от ехо :

нека "m = 4 * 1024" echo $ m

Можете да тествате това от командния ред, като въведете следния код:

нека "m = 4 * 1024"; echo $ m

Можете също така да създадете файл, съдържащ командите Баш, в който случай трябва да добавите ред в горната част на файла, който определя програмата, която трябва да изпълни кода. Например:

#! / bin / bash нека "m = 4 * 1024" echo $ m

ако се приеме, че изпълнимият Bash се намира в / bin / bash . Също така трябва да зададете разрешенията на вашия скрипт файл, така че да е изпълним. Ако приемем, че името на файла на скрипта е script1.sh , можете да зададете разрешенията, за да направите файла изпълним с командата:

chmod 777 script1.sh

След това можете да го изпълнявате с командата:

./script1.sh

Наличните аритметични операции са подобни на тези в стандартните езици за програмиране като Java и C. Освен умножението, както е илюстрирано по-горе, вие използвате добавянето:

нека "m = a + 7"

или изваждане:

нека "m = a - 7"

или разделяне:

нека "m = a / 2"

или модул (остатъкът след цялостно разделяне):

нека "m = a% 100"

Когато се прилага операция на една и съща променлива, на която е присвоен резултатът, можете да използвате стандартните аритметични оператори за задаване на стенограми, наричани още оператори на комбинирано присвояване. Например за добавяне имаме:

нека "m + = 15"

което е еквивалентно на "m = m + 15". За изваждане имаме:

нека "m - = 3"

което е еквивалентно на "m = m - 3". За разделяне имаме:

нека "m / = 5"

което е еквивалентно на "m = m / 5". И за модула имаме:

нека "m% = 10"

което е еквивалентно на "m = m% 10".

Освен това можете да използвате операторите за увеличаване и намаляване :

нека "m ++"

е еквивалентно на "m = m + 1". И

нека "м--"

е еквивалентно на "m = m - 1".

И тогава има тримерният оператор "въпросителен знак-дебелото черво", който връща една от двете стойности в зависимост от това дали определеното условие е вярно или невярно. Например

нека "k = (m <9)? 0: 1"

Дясната страна на това изречение за оценка се оценява на "0", ако променливата "m" е по-малка от 9. В противен случай тя се оценява на 1. Това означава, че променливата "k" получава "0", ако "m" от 9 и "1" в противен случай.

Общата форма на оператора на въпросителен знак и дебело черво е:

състояние? value-if-true: value-if-false

Аритметика с плаваща точка в Баш

Операторът на оператора работи само за цяло число. За аритметика с плаваща запетая можете да използвате например калкулатора GNU bc, както е показано в този пример:

ехо "32.0 + 1.4" | ж.к.

Операторът "тръба" | "" преминава аритметичния израз "32.0 + 1.4" към калкулатора bc, който връща реалното число. Командата ехо отпечатва резултата на стандартния изход.

Алтернативен синтаксис за аритметика

Забележките (обратно единични кавички) могат да се използват за оценка на аритметичен израз, както в този пример:

echo `expr $ m + 18`

Това ще добави 18 към стойността на променливата "m" и след това ще отпечата резултата.

За да присвоите изчислителната стойност на променлива, можете да използвате знака за равенство без интервали около него:

m = "expr $ m + 18"

Друг начин да се оценят аритметичните изрази е да се използва двойна скоба. Например:

((т * = 4))

Това ще удвои стойността на променливата "m".

Освен аритметична оценка, баши черупката осигурява и други програмни конструкции, като например за-цикли , while-loops , условни и функции и подпрограми .