bc command is used for command line calculator. It is similar to basic calculator by using which we can do basic mathematical calculations.
Arithmetic operations are the most basic in any kind of programming language. Linux or Unix 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.
Syntax:
bc [ -hlwsqv ] [long-options] [ file ... ]
Options:
-h, {- -help } : Print the usage and exit
-i, {- -interactive } : Force interactive mode
-l, {- -mathlib } : Define the standard math library
-w, {- -warn } : Give warnings for extensions to POSIX bc
-s, {- -standard } : Process exactly the POSIX bc language
-q, {- -quiet } : Do not print the normal GNU bc welcome
-v, {- -version } : Print the version number and copyright and quit
The bc command supports the following features:
1. Arithmetic Operators
Examples:
Input : $ echo "12+5" | bc
Output : 17Input : $ echo "10^2" | bc
Output : 100
How to store the result of complete operation in variable?
Example:
Input:
$ x=`echo "12+5" | bc`
$ echo $x
Output:17
Explanation: Stores the result of first line of input in variable x and then display variable x as $x.
2. Assignment Operators
Examples:
Input: $ echo "var=10;var" | bc
Output: 10
Explanation: Assign 10 to the variable and print the value on the terminal.
Input: $ echo "var=10;var^=2;var" | bc
Output: 100
Explanation: Squares the value of the variable and print the value on the terminal.
How to store the result of complete operation in variable?
Example:
Input:
$ x=`echo "var=500;var%=7;var" | bc`
$ echo $x
Output:3
Explanation: Stores the result of 500 modulo 7 i.e. remainder of 500/7 in variable x and then display variable x as $x.
3. Increment Operators
Examples:
Input: $ echo "var=10;++var" | bc
Output: 11
Explanation: Variable is increased first and then result of variable is stored.
Input: $ echo "var=10;var++" | bc
Output: 10
Explanation: Result of the variable is used first and then variable is incremented.
4. Decrement Operators
Examples:
Input: $ echo "var=10;--var" | bc
Output: 9
Explanation: Variable is decreased first and then result of variable is stored.
Input: $ echo "var=10;var--" | bc
Output: 10
Explanation: Result of the variable is used first and then variable is decremented.
5. Comparison or Relational Operators
The list of relational operators supported in bc command are shown below:
Examples:
Input: $ echo "10>5" | bc
Output: 1Input: $ echo "1==2" | bc
Output: 0
6. Logical or Boolean Operators
Logical operators are mostly used in conditional statements. The result of the logical operators is either 1(TRUE) or 0(FALSE).
Examples:
Input: $ echo "10 && 5" | bc
Output: 1Input: $ echo "0 || 0" | bc
Output: 0Input: $ echo "! 0" | bc
Output: 1
7. Mathematical Functions
The built-in math functions supported are :
In addition to the math functions, the following functions are also supported :
Examples:
Input:
$ pi=`echo "h=10;4*a(1)" | bc -l`
$ echo $pi
Output: 3.14159265358979323844
Explanation: Assign the value of "pi" to the shell variable pi. Here, a refers to the arctangent function, which is part of the math library loaded with the -l option.
Input: $ echo "scale($pi)" | bc -l
Output: 20
Explanation: Gives the number of digits after decimal point in value of "pi" calculated in previous example.
Input: $ echo "s($pi/3)" | bc -l
Output: .86602540378443864675
Explanation: Gives sine values at "pi/3" angle. Angle must be in radians. Here, s refers to the sine function
Input: $ echo "c($pi/3)" | bc -l
Output: .50000000000000000001
Explanation: Gives cosine values at "pi/3" angle. Angle must be in radians. Here, c refers to the cosine function.
Input: $ echo "e(3)" | bc -l
Output:20.08553692318766774092
Explanation: Gives exponential^value as output.
Input: $ echo "l(e(1))" | bc -l
Output: .99999999999999999999
Explanation: Gives natural logarithm of the value i.e. w.r.t. base 'e'.
Input: $ echo "obase=2;15" | bc -l
Output: 1111
Explanation: Convert Decimal to Binary.
Input: $ echo "obase=8;9" | bc -l
Output: 11
Explanation: Convert Decimal to Octal.
Input: $ echo "ibase=2;1111" | bc -l
Output: 15
Explanation: Convert Binary to Decimal.
Input: $ echo "ibase=2;obase=8;10" | bc -l
Output: 2
Explanation: Convert Binary to Octal.
8. Conditional Statements
Conditional Statements are used to take decisions and execute statements based on these decisions. bc command supports the if condition.
Syntax:
if(condition) {statements} else {statements}
Example:
Input: $ echo 'n=8;m=10;if(n>m) print "n is greater" else print "m is greater" ' | bc -l
Output: m is greater
9. Iterative statements
bc command supports the for loop and while loop for doing iterations.
Syntax:
for(assignment; condition; updation)
{
statements.....
.......
........
}OR
while(condition)
{
statements.....
.......
........
}
Examples:
Input: $ echo "for(i=1; i<=10; i++) {i;}" | bc
Output:
1
2
3
4
5
6
7
8
9
10
Input: $ echo "i=1;while(i<=10) {i; i+=1}" | bc
Output:
1
2
3
4
5
6
7
8
9
10
Explanation: Both examples prints numbers from 1 to 10 using the respective looping syntax.
Some Pseudo Statements:
10. Functions : Functions provide a method of defining a computation that can be executed later. Functions in bc always compute a value and return it to the caller. Function definitions are "dynamic" in the sense that a function is undefined until a definition is encountered in the input. That definition is then used until another definition function for the same name is encountered. The new definition then replaces the older definition.
Syntax:
define name (parameters)
{
statements.......
.......
........
return statement}
11. We can write our arithmetic expressions in a file and then execute those statements by providing the filename to the bc command.
Example:
Input :
$ cat >> example.txt
2+5;
var = 10*3
var
print var
quitPress ctrl+D
$ bc example.txt
Output :
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
7
30
TO AVOID SYSTEM GENERATED MESSAGE ON OUTPUT SCREEN, USE:
$ bc -q example.txt
Output :
7
30
12. Important Points:
https://www.youtube.com/watch?list=PLqM7alHXFySFc4KtwEZTANgmyJm3NqS_L&v=_UwhS0IvwQk&feature=youtu.be
bc - The Calculator in Linux
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4