Skip to main content

bc command in unix

 

 

bc Command

 

Arithmetic operations are the most common in any kind of programming language. Unix or linux operating system provides the bc command and expr command for doing arithmetic calculations. You can use these commands in bash or shell script also for evaluating arithmetic expressions. 

Here we will see only about the bc command. The bc command evaluates expressions similar to the c programming language. The bc command supports the following features. 

·                       Arithmetic operators

·                       Increment and decrement operators

·                       Assignment operators

·                       Comparision or Relational Operators

·                       Logical or Boolean operators

·                       Math Functions

·                       Conditional statements

·                       Iterative statements

·                       Functions

Arithmetic operator Examples:

The following example shows how to use various arithmetic operators. The examples are pretty straight forward. So, I will provide explanation only when required. In most of the examples the echo statment is used to provide the expressions to the bc command.

1. Finding Sum of Two expressions 


> echo "2+5" | bc

7


2. Difference of Two numbers


> echo "10-4" | bc

6


3. Multiplying two numbers


> echo "3*8" | bc

24


4. Dividing two numbers 


When you divide two numbers, the bc command Ignores the decimal part and returns only the integral part as the output. See the below examples


> echo "2/3" | bc

0

 

> echo "5/4" | bc

1


Use the scale function to specify the number of decimal digits that the bc command should return.


> echo "scale=2;2/3" | bc

.66


5. Finding the remainder using modulus operator


> echo "6%4" | bc

2


6. Using exponent operator


> echo "10^2" | bc

100


Here the expression is evaluated as 10 to the power of 2.


Assignment Operator Examples


Assignment operators are used to assign a value to the variable. The following example shows how to use the assignment operators:

Assigns 10 to the variable and prints the value on the terminal.

> echo "var=10;var" | bc

 

Increment the value of the variable by 5

> echo "var=10; var+=5;var | bc

15


The lists of assignment operators supported are: 

·                       var = value   : Assign the value to the variable

·                       var += value : similar to var = var + value

·                       var -= value  : similar to var = var - value

·                       var *= value  : similar to var = var * value

·                       var /= value   : similar to var = var / value

·                       var ^= value  : similar to var = var ^ value

·                       var %= value : similar to var = var % value

Increment Operator Examples

There are two kinds of increment operators. They are pre increment and post increment operators. 

·                       ++var : Pre increment operator. The variable is incremented first and then the result of the variable is used.

·                       var++ : Post increment operator. The result of the variable is used first and then the variable is incremented.

> echo "var=5;++var" | bc

6

 

> echo "var=5;var++" | bc

5


Here, in the second example the value of var is printed first and then it is incremented. See the below example, to see the complete incremental effect.


> echo "var=5;var++;var" | bc

5

6


Decrement Operator Examples

Similar to the increment operators, there are two types of decrement operators.

·                       --var : Pre decrement operator. The variable is decremented first and then the result of the variable is used.

·                       var-- : Post decrement operator. The result of the variable is used first and then the variable is decremented.

> echo "var=5;--var"| bc

4

> echo "var=5;var--"| bc

5


Relational Operators Examples

Relational operators are used to compare two numbers. If the comparison is true, then it returns 1. Otherwise (false), it returns 0. The relational operators are mostly used in conditional statements like if. The list of relational operators supported in bc command are shown below: 

·                       expr1 < expr2 : Result is 1 if expr1 is strictly less than expr2.

·                       expr1 <= expr2 : Result is 1 if expr1 is less than or equal to expr2.

·                       expr1 > expr2 : Result is 1 if expr1 is strictly greater than expr2.

·                       expr1 >= expr2 : Result is 1 if expr1 is greater than or equal to expr2.

·                       expr1 == expr2 : Result is 1 if expr1 is equal to expr2.

·                       expr1 != expr2 : Result is 1 if expr1 is not equal to expr2.



> echo "10 > 5" | bc

1

 

> echo "1 == 2" | bc

0


Logical Operator Examples:

Logical operators are also mostly used in conditional statements. The result of the logical operators is either 1 (True) or 0 (false) ! expr : Result is 1 if expr is 0. 

·                       expr && expr : Result is 1 if both expressions are non-zero.

·                       expr || expr : Result is 1 if either expression is non-zero.



> echo "4 && 10" | bc

1

> echo "0 || 0" | bc

0


Math Functions

The built-in math functions supported are: 

·                       s (x) : The sine of x, x is in radians.

·                       c (x) : The cosine of x, x is in radians.

·                       a (x) : The arctangent of x, arctangent returns radians.

·                       l (x) : The natural logarithm of x.

·                       e (x) : The exponential function of raising e to the value x.

·                       j (n,x): The bessel function of integer order n of x.

·                       sqrt(x): Square root of the number x.


In addition to the math functions, the following functions are also supported. 

·                       length(x) : returns the number of digits in x

·                       read() : Reads the number from the standard input.


Conditional Statement Examples

Conditional statements are used to take decisions and execute statements based on these decisions. Bc command supports the if condition. The syntax of if statement is


if(condition) { statements} else {statements}


The following example shows show to use the if condition


> echo 'if(1 == 2) print "true" else print "false"' | bc

false


Iterative Statements:

Bc command supports the for and while loop for doing iterations. The syntax of for and while loop are shown below:


for (assignment; condition; increment) {

statements

}

 

while (condition) {

statements

}


The following examples prints numbers from 1 to 10 using the for and while loops


> echo "for(i=1;i<=10;i++) {i;}" | bc

> echo "i=1; while(i<=10) { i; i+=1}" | bc



 

Comments

Popular posts from this blog

PL / SQL practice programs

  PL / SQL  practice programs 1. Write a program to print the following format WELCOME TO PL/SQL PROGRAMMING   BEGIN   DBMS_OUTPUT.PUT_LINE('WELCOME   TO   PL/SQL   PROGRAMMING'); END; /   2. Write a program to print the numbers from 1 to 100   DECLARE N NUMBER(3):=1; V VARCHAR2(1000); BEGIN WHILE N <=1000 LOOP V:=V||''||N; N:=N+1; END LOOP; DBMS_OUTPUT.PUT_LINE(V); END; / 3. write a program to print the even numbers from 1 to 100 DECLARE N NUMBER(3):=0; BEGIN WHILE N <=100 LOOP N:=N+2; DBMS_OUTPUT.PUT_LINE(N); END LOOP; END; / 4. Write a program to print the odd numbers from 1 to 100 DECLARE N NUMBER(3):=1; BEGIN WHILE N <=100 LOOP N:=N+2; DBMS_OUTPUT.PUT_LINE(N); END LOOP; END; / 5. write a program for multiplication table DECLARE A NUMBER(2):=&A; B   NUMBER(2):=1; C   NUMBER(3); BEGIN WHILE B <

RDBMS MINI PROJECT

  Capgemini class room training.   RDBMS MINI PROJECT ( SPRINT ) LIBRARY MANAGEMENT SYSTEM   Table of Contents Serial No. Topic Name Content Page No. 1.   Introduction 1.1 Setup checklist for mini project 3     1.2 Instructions 3 2.   Problem statement   2.1 Objective 4     2.2 Abstract of the project 4     2.3 Functional components of the project 4     2.4 Technology used 5 3.   Implementation in RDBMS LOT 3.1 Guidelines on the functionality to be built 6 4.   Evaluation 4.1 Evaluation 7     1.      Introduction This document outlines a mini project for the RDBMS LOT

sample tables

  --sample tables DROP TABLE EMP; DROP TABLE DEPT; DROP TABLE BONUS; DROP TABLE SALGRADE; DROP TABLE DUMMY;   CREATE TABLE EMP        (EMPNO NUMBER(4) NOT NULL,         ENAME VARCHAR2(10),         JOB VARCHAR2(9),         MGR NUMBER(4),         HIREDATE DATE,         SAL NUMBER(7, 2),         COMM NUMBER(7, 2),         DEPTNO NUMBER(2));   INSERT INTO EMP VALUES         (7369, 'SMITH',   'CLERK',      7902,         TO_DATE('17-DEC-1980', 'DD-MON-YYYY'),   800, NULL, 20); INSERT INTO EMP VALUES         (7499, 'ALLEN',   'SALESMAN',   7698,         TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 1600,   300, 30); INSERT INTO EMP VALUES         (7521, 'WARD',    'SALESMAN',   7698,         TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 1250,   500, 30); INSERT INTO EMP VALUES         (7566, 'JONES',   'MANAGER',    7839,         TO_DATE('2-APR-1981', 'DD-MON-YYYY'),   2975, NULL,