While loop and advanced control loop commands

In Bash, you can use a while loop to execute a block of code repeatedly as long as a certain condition is met. The basic syntax for a while loop is as follows:

while [ condition ]
do
   # code to be executed
done

Here’s an example of how you might use a while loop in a Bash script:

#!/bin/bash
# Set the initial value of the counter

counter=1
# Set the maximum value of the counter
max=10
# Run the loop until the counter exceeds the maximum value
while [ $counter -le $max ]
do
    # Print the current value of the counter
    echo $counter
    # Increment the counter by 1
    counter=$((counter+1))
done

This script will print the numbers 1 through 10, one number per line. The condition in the while loop is [ $counter -le $max ], which means “continue looping as long as the value of $counter is less than or equal to the value of $max.”

Inside the loop, the script prints the current value of $counter using the echo command and then increments the value of $counter by 1 using the counter=$((counter+1)) expression. When the value of $counter becomes greater than $max, the loop will exit and the script will continue executing the code after the done statement.

Control flow of while loop using continue and break

In a while loop in Bash, the continue and break statements are used to control the flow of the loop.

The continue statement causes the loop to skip the rest of the current iteration and move on to the next one. For example:

i=1
while [ $i -le 10 ];
do
  if [ $i -eq 5 ];
  then
     i=$((i+1))
     continue
  fi

echo $i
i=$((i+1))
done

This script will print the numbers 1 through 10, but it will skip the number 5.

The break statement causes the loop to exit immediately. For example:

i=1
while [ $i -le 10 ];
do
   if [ $i -eq 5 ];
   then
      break
   fi

echo $i
i=$((i+1))
done

This script will print the numbers 1 through 4 and then exit the loop.

You can use the break and continue statements in any type of loop, including while, for, and until loops.

Combination of read command and while

You can use the read command in a while loop to continue reading input from the terminal until the user enters the letter ‘q’. Here is an example of how you might do this:

while true;
do read -p "Enter a number or 'q' to quit: " input
   if [ "$input" = "q" ];
   then
      break
   fi
# Process the input
done

This script will prompt the user to enter a number or ‘q’ to quit. It will continue reading input until the user enters ‘q’, at which point it will exit the loop and terminate the script.

You can use the read command to read input from the terminal and store it in a variable. In this case, the input is stored in the input variable. You can then use an if statement to check whether the input is ‘q’ and use the break statement to exit the loop if it is.

You can modify this script to do whatever processing you want with the input. For example, you could use an if statement to check whether the input is a valid number and perform some operation on it, or you could use a case statement to perform different actions based on the input.

Error checking in while loop

Here is an example of a while loop that checks for an error code after running a command:

# Run the command and store the exit code in a variable
command_exit_code=$?
# Set a flag to indicate if an error has occurred
error_occurred=0
# Loop until the command succeeds or the maximum number of attempts is reached
while [ $command_exit_code -ne 0 ] && [ $error_occurred -lt 10 ]
do
   # Run the command again
   command

   # Update the exit code variable
   command_exit_code=$?
   # Increment the error count
   error_occurred=$((error_occurred+1))
done
# Check if an error occurred
if [ $error_occurred -eq 10 ]
then
   echo "Error: The command failed after 10 attempts."
else
   echo "The command was successful."
fi

This loop will run the command repeatedly until it succeeds or the maximum number of attempts (10 in this example) is reached. If the command succeeds, the loop will exit and the script will print a message indicating that the command was successful. If the command fails after 10 attempts, the script will print an error message.

License

Developers ultimate guide: Linux Bash scripting Copyright © 2022 by Matin Maleki. All Rights Reserved.

Share This Book