Програмиране на BASH

bc за извършване на разширени аритметични операции в BASH

bc за извършване на разширени аритметични операции в BASH
Basic Calculator, известен също като „bc“, е помощна програма за команден ред на Linux, използвана за извършване на усъвършенствана аритметика и алгебра в bash скриптове. Той осигурява много различни математически функции като синус, косинус, тангенс, естествен логаритъм в bash. Bash не може да извършва разширени аритметични операции, като сравняване на плувки; това е мястото, където bc е полезен. Командата 'bc' е предшествана от 'dc' (Desk Calculator), помощна програма UNIX. В този урок ще използваме командата 'bc' за извършване на разширени аритметични операции.

Извършване на основни аритметични операции

Простите аритметични операции като събиране, изваждане, деление и умножение могат да се извършват с помощта на командата 'bc'. Синтаксисът за прилагане на прости бинарни оператори в bash с помощта на командата 'bc' е както следва.

[имейл защитен]: ~ $ echo “ ”| пр.н.е

В този раздел ще използваме командата 'bc' за извършване на прости аритметични операции.

[имейл защитен]: ~ $ num1 = 2.35322 5
[имейл защитен]: ~ $ num2 = 1.223353
[имейл защитен]: ~ $ echo “$ num1 + $ num2” | пр.н.е
3.576578
[имейл защитен]: ~ $ echo “$ num1- $ num2” | пр.н.е
1.129872
[имейл защитен]: ~ $ echo “$ num1 * $ num2” | пр.н.е
2.878824
[имейл защитен]: ~ $ echo “$ num1 / $ num2” | пр.н.е
1

В горния пример, докато извършвахме разделяне, получихме резултата без десетични точки. За да получим резултата до 'n' десетични точки, трябва да зададем стойността на скалата на 'n', както е показано в следващия пример.

[имейл защитен]: ~ $ echo “мащаб = 10; $ num1 / $ num2 ”| пр.н.е
1.9235862420

Като алтернатива можем да използваме флага '-l' и командата 'bc', за да получим десетичен изход.

[имейл защитен]: ~ $ echo “$ num1 / $ num2” | bc -l
1.92358624207403750184

Командата 'bc' може също да се използва за извършване на разделяне на модула и изчисляване на мощността на число в bash скриптове.

[имейл защитен]: ~ $ echo “10% 4” | пр.н.е
2
[имейл защитен]: ~ $ echo “10 ^ 2” | пр.н.е
100

Извършване на усъвършенствани аритметични операции

Досега използвахме командата 'bc' за извършване на някои основни аритметични операции като събиране, изваждане, умножение и т.н., сега; в този раздел ще използваме командата 'bc', за да извършим някои разширени аритметични операции. Ще обсъдим как можем да използваме оператори за сравнение, логически или булеви оператори, усъвършенствани математически функции и условни изрази в bash, използвайки командата 'bc'.

Сравнителни оператори

Операторите за сравнение вземат две числа, сравняват ги и след това се връщат 1 или 0 в зависимост от сравнението. Ако сравнението е вярно, тогава резултатът е ИСТИНСКИ (1); в противен случай е така FALSE (0). Следват някои примери за оператори за сравнение.

  • num1> num2: Това сравнение ще се върне 1 ако num1 е по-голямо от num2.
  • num1 < num2: Резултатът ще бъде 1 ако num1 е по-малко от num2.
  • num1 <= num2: Резултатът ще бъде 1 ако num1 е по-малко или равно на num2.
  • num1> = num2: Резултатът ще бъде 1 ако num1 е по-голямо или равно на num2.
  • num1 == num2: Резултатът ще бъде 1 ако num1 е равно на num2.
  • num1 != num2: Резултатът ще бъде 1 ако и двете числа не са равни.

Следват някои примери за оператори за сравнение, използвани заедно с командата 'bc'.

[имейл защитен]: ~ $ echo “5 == 5” | пр.н.е
1
[имейл защитен]: ~ $ echo “4!= 4 ”| пр.н.е
0
[имейл защитен]: ~ $ echo “2> 5” | пр.н.е
0
[имейл защитен]: ~ $ echo “4<=4” | bc
1

Булеви оператори

Булеви или логически оператори се използват в условни изрази за изпълнение на някои логически решения. Следват трите основни логически оператора.

  • stat1 && stat2: Това ще се върне 1 ако и двете твърдения са ненулево.
  • stat1 || stat2: Това ще се върне 1 ако някое от твърденията е ненулево.
  • ! статистика: Това ще се върне 1 ако изявлението е ненулево и обратно.

Следващите примери илюстрират как се използват логически оператори с командата 'bc'.

[имейл защитен]: ~ $ echo “-5 && 0” | пр.н.е
0
[имейл защитен]: ~ $ echo “-1 || 0 ”| пр.н.е
1
[имейл защитен]: ~ $ echo “! 0 ”| пр.н.е
1

Условни изявления

Условните изрази се използват за изпълнение на конкретни команди в зависимост от приложеното условие. Приложеното условие в условния оператор включва логически и оператори за сравнение. Следва примерът на условни изрази с командата 'bc'.

[имейл защитен]: ~ $ a = 15
[имейл защитен]: ~ $ b = 20
[имейл защитен]: ~ $ echo 'if (a> b) print "a is larger" else print "b is larger"' | bc -l
b е по-голямо

В горния пример изразът проверява дали a е по-голямо от b или не. Ако a е по-голямо от b, ще отпечата „a е по-голямо“; в противен случай ще отпечата „b е по-голямо.”Можем да приложим всяко условие, използвайки булеви оператори и оператори за сравнение в горния пример.

Математически функции

Командата 'bc' предоставя и някои вградени математически функции, които можем да използваме, без да ги дефинираме. Следват някои основни функции, използвани с командата 'bc' в bash.

  • s (x): връща синус от x, където x е в радиани
  • c (x): връща косинус от x, където x е в радиани
  • a (x): връща арктангенс от x и резултатът е в радиани
  • sqrt (x): връща корен квадратен от x. Той причинява грешка по време на работа, когато x е отрицателен
  • l (x): връща естествения дневник на x.

Тези функции могат да се използват с командата 'bc', както е показано в следващите примери.

[имейл защитен]: ~ $ pi = 3.1415
[имейл защитен]: ~ $ echo “s ($ pi / 2)” | bc -l
1
[имейл защитен]: ~ $ echo “c ($ pi / 2)” | bc -l
0
[имейл защитен]: ~ $ echo “a (1)” | bc -l
0.7854

Квадратният корен на число може да се изчисли в bash с помощта на командата 'bc', както е показано на следващата фигура.

[имейл защитен]: ~ $ echo “sqrt (4)” | bc -l
2

Докато се опитва да изчисли квадратния корен от отрицателно число, черупката ще хвърли грешка по време на изпълнение.

[имейл защитен]: ~ $ echo “sqrt (-2)” | bc -l
Грешка по време на изпълнение (func = (основно), adr = 4): Квадратна корен от отрицателно число

Естественият логаритъм на число може да се изчисли в bash с помощта на командата 'bc', както следва.

[имейл защитен]: ~ $ echo “l (2)” | bc -l
.69314718055994530941

Заключение

Докато пишем скриптове за автоматизация в bash, понякога се нуждаем от усъвършенствани математически функции и логически оператори за изпълнение на команди. Командата 'bc' предоставя много разширени математически функции и оператори за извършване на аритметични изчисления на високо ниво. Този урок обсъжда използването на командата 'bc' за извършване на разширени аритметични операции в bash.

Как да покажа брояч на FPS в игрите на Linux
Linux игрите получиха голям тласък, когато Valve обяви поддръжка на Linux за Steam клиент и техните игри през 2012 г. Оттогава много AAA и независими ...
Как да изтеглите и пуснете Civilization VI на Сид Майер на Linux
Въведение в играта Civilization 6 е модерен поглед върху класическата концепция, въведена в поредицата от игрите Age of Empires. Идеята беше доста про...
Как да инсталирате и играете Doom на Linux
Въведение в Doom Серията Doom възниква през 90-те години след пускането на оригиналния Doom. Това беше незабавен хит и от този момент нататък серията ...