BASH/C2/Arithmetic-Comparison/English

From Script | Spoken-Tutorial
Revision as of 18:30, 23 October 2013 by Nancyvarkey (Talk | contribs)

Jump to: navigation, search

Title of script: Arithmetic comparison in BASH shell scripting

Author: Ashwini Patil

Keywords: video tutorial, Bash shell, -eq, -ne, -gt, -ge, -lt, -le


Visual Cue
Narration
Display Slide 1 Welcome to the spoken tutorial on Arithmetic Comparison in BASH
Display Slide 2 In this tutorial, we will learn
  • -eq
  • -ne
  • -lt
  • -le
  • -gt
  • -ge

commands

We will do this with the help of some examples.

Display Slide 3 For this tutorial I am using Ubuntu Linux 12.04 Operating System and

GNU BASH version 4.1.10

Please note, GNU bash version 4 or above is recommended for practice.

On the editor.

example1.sh


I already have a working example of arithmetic operators. Let me switch to it now.


I have named my file as example1.sh

Open a file in any editor of your choice and type the code as shown.


You must be familiar how to do so, by now.

In this program, we will check whether a given file is empty or not.
Highlight

#!/bin/bash

Let me explain the code now.

This is the shebang line.

Highlight


read -p "Enter filename: " y

First of all, “Enter filename” will be printed on the console.

read command reads one line of data from the standard input.

Highlight

x=`cat $y | wc -w`


This command is enclosed within backticks.

Backtick has a very special meaning. Everything you type between backticks is evaluated.


cat command will display the content of the file.

wc will print newline, word, and byte counts for each file.

-w will print the word count.

What will happen is -

  • First the cat command will read the file; this is the input file
  • Which is then piped or sent to the wc command
  • So, this statement counts the words in a given file
  • The output is stored in variable x
Highlight


if [ $x -eq 0 ]; then


echo "$y has zero words"

fi

This is the if statement

-eq command checks whether word count is equal to 0.

If the condition is true, we will print the message “File has zero words”.

fi is the end of first if condition.

Highlight

if [ $x -ne 0 ]; then


echo "$y has $x words"

fi

Here is another if condition.

Here, -ne command checks whether word count is not equal to 0.

If the condition is true, we will print a message “File has so-and-so words”.


$x will give the word count.

This is the end of 2nd if condition.

Save your program file.


Let us execute our program.

Type:

touch list.txt

Now first let's create a file list.txt

So type: touch list.txt

echo “How are you” > list.txt


Now, let's add a line in the file

Type: echo “How are you”

After the double quotes, > (greater than signs) list.txt

On the terminal type:

chmod +x example1.sh

Type: ./example1.sh

Now let us make our script executable. Type: chmod +x example1.sh

Then type: ./example1.sh

Type:

list.txt

Enter filename is displayed.

Type:list.txt

Highlight

The Output

The output is displayed as:

list.txt has 3 words

Now let's learn about another set of operators.
Switch to example2.sh Let me switch to another file example2.sh in my editor.
Please open a file in your editor and name it as example2.sh
Now type the code as shown here in your example2.sh file.
Let me explain the code now.
This program will check whether the word count is
  • greater or less than 1.
  • Between 1 and 100
  • Or above 100


Highlight

#!/bin/bash

We have our shebang line here.
Highlight

read -p "Enter the filename: " y

read statement takes input as filename from the user.
Highlight

wc -c`

-c command is used to print the byte counts.
Highlight

if [ $x -lt 1 ] ;

then

echo "No characters present in $y"

fi

In the if statement, -lt command checks whether word count is less than 1.


If the condition is true, then we print “No characters present in file”.


fi ends the first if statement.

Highlight

if [ $x -gt 1 ] ;

then

echo "$y has more than one character"

The next if statement contains nested if statements.


First the -gt command checks whether word count is greater than 1.


If yes, then this echo statement will get executed.

Highlight

if [ $x -ge 1 ] && [ $x -le 100 ]; then

echo "Number of characters ranges between 1 and 100"


fi

There are multiple if statements within this if statement.


Here in this if statement -

  • -ge command checks whether word count is greater than equal to 1 and
  • -le command checks whether word count is less than equal to 100.

If both the conditions are satisfied, then it prints:

Number of characters ranges between 1 and 100.


Please note that both conditions should be true to satisfy the entire if condition.


This is because we have included && in between both conditions.


fi is the end of this if statement.

Highlight

if [ $x -gt 100 ] ;

then

echo "Number of characters is above 100"

fi

Then the next if statement will be evaluated.


-gt command checks whether word count is greater than 100.

If the condition is stasified, we print Number of characters is above 100.


fi is the end of this if statement.

Highlight fi Here we end the 2nd if statement.
On the terminal

Type

chmod +x example2.sh

Type:

./example2.sh

Let us execute the program now.

Type:

chmod +x example2.sh

Type:

./example2.sh

Type:

list.txt

Type:

list.txt

Highlight the output list.txt has more than one character.


Number of characters ranges between 1 and 100

will be printed on the terminal.

Add or remove characters to the list.txt file.


Then observe which if statements get executed.

This brings us to the end of this tutorial.

Let us summarize.

Display Slide 10

Summary

Summary

In this tutorial we learnt,

-lt

-gt

-le

-ge

-eq

Display Slide 11

Assignment

Write a program to demonstrate the use of not equal to operator.

Hint: -ne

Display Slide 12

http://spoken-tutorial.org /What\_is\_a\_Spoken\_Tutorial

About the Spoken Tutorial Project

Watch the video available at the link shown below

It summarises the Spoken Tutorial project

If you do not have good bandwidth, you can download and watch it

Display Slide 13

Spoken Tutorial Workshops

The Spoken Tutorial Project Team

Conducts workshops using spoken tutorials

Gives certificates to those who pass an online test

For more details, please write to

contact@spoken-tutorial.org

Display Slide 14

Acknowledgement

Spoken Tutorial Project is a part of the Talk to a Teacher project

It is supported by the National Mission on Education through ICT, MHRD, Government of India

More information on this Mission is available at: http://spoken-tutorial.org\NMEICT-Intro

The script has been contributed by FOSSEE and spoken-tutorial team.

This is Ashwini Patil from IIT Bombay signing off.

Thank you for joining.

Contributors and Content Editors

Ashwini, Nancyvarkey