Understanding getopts

Command line parameters passed along with commands are also called as positional parameters. Many times, we need to pass options such as –f and -v along with positional parameter.

Let's learn the example for passing the –x or –y options along with commands. Write the Shell script getopt.sh as follows:

#!/bin/bash

USAGE="usage: $0 -x -y"

while getopts :xy: opt_char
do
  case $opt_char in
  x)
    echo "Option x was called."
    ;;
  y)
    echo "Option y was called. Argument called is $OPTARG"
    ;;
  ?)
    echo "$OPTARG is not a valid option."
    echo "$USAGE"
    ;;
  esac
done

Execute this program:

$ ./getopt.sh

You will be learning switch and case statements in the next chapters. In this script, if option –x is passed, a case statement for x will be executed. If the –y option is passed, then a case statement for –y will be executed. Since no option is passed, there will not be any output on the screen.

$ ./getopt.sh –x

Output:

Option x was called."

$ ./getopt.sh –y my_file
Output:
Option y was called. Argument called is my_file.

$ ./getopt.sh –x –y my_file
Output:
Option x was called.
Option y was called. Argument called is my_file.

$ ./getopt.sh –y my_file -x
Output:
Option y was called. Argument called is my_file.
Option x was called.
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset