What Is Getopts in Shell Scripting?
Shell scripting is a powerful tool that allows you to automate various tasks in a Unix-like operating system. One essential aspect of shell scripting is handling command-line arguments. The getopts command in shell scripting provides a convenient way to parse and process these arguments.
The Basics of Getopts
The getopts command allows you to define options and their corresponding arguments in your shell script. It follows the syntax:
while getopts "options" opt; do case $opt in option1) # Code for option1 ;; option2) # Code for option2 ;; # Additional options.. esac done
In the above code, the options string represents the available options that your script supports. Each character within the string represents a single option.
For example, “a:b:c” defines three options: a, b, and c. If an option requires an argument, you can specify it by appending a colon (“:”) after the option character.
Using Getopts in Your Script
To use getopts, you need to define how your script should handle each supported option within the case statement. The variable
$opt captures the currently processed option from the command line.
- Option 1:
option1) # Code for handling option1 goes here ;;
option2) # Code for handling option2 goes here ;;
You can continue adding additional options and their corresponding code blocks as needed.
Within each option’s code block, you can access the argument (if any) provided by the user. The argument is stored in the variable
$OPTARG. You can use this value to perform specific actions based on the user’s input.
option1) echo "Option 1 selected with argument: $OPTARG" # Additional code here ;;
Putting It All Together
Let’s consider an example script that accepts two options: -f and -n. The -f option expects a filename as an argument, while the -n option does not require an argument.
while getopts "f:n" opt; do case $opt in f) echo "File name: $OPTARG" # Code for processing file goes here ;; n) echo "No argument option selected" # Code for handling no-argument option goes here ;; esac done
In this example, if we run the script with the command:
$ ./script.sh -f myfile.txt -n
The output will be:
File name: myfile.txt No argument option selected
The getopts command is a valuable tool when it comes to processing command-line arguments in shell scripts. It allows you to define options, handle arguments, and create robust and interactive scripts. With the proper use of getopts and other shell scripting techniques, you can greatly enhance your automation tasks and improve your overall productivity.