Command-line parameters passed along with commands are also called positional parameters. Many times, we need to pass options such as
-v along with a positional parameter.
Let’s look at an example for passing the
-y options along with commands.
Write 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:
You will learn about the 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. If no option is passed, there will not be any output on the screen.
Let us run script with different options::
$ ./getopt.sh -x
The output is as follows:
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.