IFS and loops in Linux bash script

April 22, 2021

The shell has one environment variable, which is named the Internal Field Separator (IFS). This variable indicates how the words are separated on the command line. The IFS variable is, normally or by default, a whitespace (”). The IFS variable is used as a word separator (token) for the for command. In many documents, IFS can be any one of the white spaces, :, |, :, or any other desired character. This will be useful while using commands such as read, set, and for. If we are going to change the default IFS, then it is a good practice to store the original IFS in a variable.

Later on, when we have done our required tasks, then we can assign the original character back to IFS.

In the following  for_16.sh script, we are using : as the IFS character:

for_16.sh

#/bin/bash 
cities=Delhi:Chennai:Bangaluru:Kolkata 
old_ifs="$IFS"           # Saving original value of IFS 
IFS=":" 
for place in $cities 
do 
      echo  The name of city is $place 
done 

Let’s test the program:

$ chmod +x for_16.sh
$ ./for_16.sh

The following will be the output after executing the preceding commands:

Output:

The name of city is DelhiThe name of city is ChennaiThe name of city is BangaluruThe name of city is Kolkata

By default, the original inter-field separator is a whitespace. We have saved the original IFS in the old_ifs variable. We assigned a colon : and an IFS in the script. Therefore, we can use : as an inter-field separator in our test file or text string.

Related Articles

Calculating and reducing the runtime of a script

In this article, we are going to learn how to calculate and reduce the script’s runtime. A simple time command will help in calculating the execution time.PrerequisitesBesides having a terminal open, make sure you have the necessary scripts present in your...

read more

Lorem ipsum dolor sit amet consectetur

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

fifteen + 6 =