
getopt Command in Linux
getopt is a command that you can use on Linux to parse command-line options in shell scripts. It helps scripts handle options and their arguments in a standardized way. With the help of this command, the task to manage user inputs and improve script functionality becomes a lot easier.
Using the getopt command, you can process both short and long options. Apart from that, it helps ensure that the options you provided are valid and well organized for further processing.
Table of Contents
Here is a comprehensive guide to the options available with the getopt command −
- Syntax of getopt Command
- getopt Command Options
- Examples of getopt Command in Linux
- Difference between getopt and getopts
Syntax of getopt Command
The basic syntax to use getopt command in Linux is given below −
getopt [options] optstring parameters
Here,
- options specifies optional flags used for modifying the behavior of getopt.
- optstring is a string that specifies the short options to be recognized.
- parameters are the arguments passed to the shell script that getopt will parse.
getopt Command Options
The following are some available options you can use with the getopt command −
Option | Description |
---|---|
-a, --alternative | Allows long options to begin with a single -. |
-h, --help | Displays help information. |
-l, --longoptions <longopts> | Specifies the long options to be recognized. |
-n, --name<progname> | Specifies the name used for error reporting. |
-o, --options<optstring> | Defines the short options that are going to be recognized. |
-q, --quiet | Disable error reporting done by getopt(3). |
-Q, --quiet-output | Suppresses normal output. |
-s, --shell <shell> | Sets quoting conventions to those of the specified shell. |
-T, --test | Tests for the getopt(1) version. |
-u, --unquoted | Prevents quoting of the output. |
-v, --version | Display version information. |
Examples of getopt Command in Linux
To understand the getopt usage on Linux, it is necessary to have a script file. For this process, we have created a script called script.sh using nano editor. Here's a simple code that is included in the script we have created −
#!/bin/bash options=$(getopt -o ab:c:: -- "$@") eval set -- "$options" while true; do case "$1" in -a) echo "Option -a selected"; shift ;; -b) echo "Option -b selected with argument $2"; shift 2 ;; -c) echo "Option -c selected with optional argument $2"; shift 2 ;; --) shift; break ;; *) break ;; esac done
The above provided script uses a while loop to process the command-line options specified by the options string (ab:c::). The value of the option is stored in $1, and any associated argument is stored in $2.
Understanding the Options String
- a − The -a option does not require an argument.
- b: − The -b option requires an argument.
- c:: − The -c option optionally takes an argument.
Making the Script Executable
After writing your script, you must save it and make it executable with the following command −
chmod +x script.sh
Running the Script
Once you created the script, you can run it by passing the appropriate arguments, as provided below −
./script.sh -a -b argB -c argC
Step-by-Step Execution
- Option Parsing − The getopt command processes each option provided in the command line.
- Option -a − The script recognizes the -a option and performs the corresponding action.
- Option -b − The script recognizes the -b option and performs its corresponding action with the argument argB.
- Option -c − The script recognizes the -c option and performs its corresponding action with the optional argument argC.
Expected Output
When you run the script with -a, -b argB, and -c argC, the output will be −

Additional Notes
Invalid Options − If an invalid option is provided, the script will throw an error message, for example, running ./script.sh -d will output an error.

Arguments for Options − If options require arguments, they can be passed in the command line. For example, if -b requires an argument, you would run ./script.sh -b argB.

Difference between getopt and getopts
Like getopt, there is another command that is commonly used for parsing command line options called getopts. They both differ in their functionality and usage; the following are some of the key differences between these commands −
Feature | getopt | getopts |
---|---|---|
Type | External command or utility, usually C-based | Built-in command in shells like bash and ksh |
Usage | Parses both short (single characters) and long options (e.g., --option) | Parses short options (single characters) |
Support | Supports both short and long options, offering more flexibility | Limited to POSIX-compliant short options |
Availability | Found as a separate command or utility on Unix-like systems | Built into most POSIX-compliant shells (bash, ksh) |
Complexity | Needs additional setup and management as it is an external tool. | Simplifies syntax and usage within shell scripts |
Conclusion
The getopt is a powerful utility used for parsing command-line options in Linux shell scripts. It standardizes the handling of options and their arguments, thus, making it easier for you to manage user inputs and enhance script functionality.
In this tutorial, we covered the syntax, available options, usage and differences between the getopt and getopts commands. Additionally, we included practical script examples to give you a thorough understanding of how to use getopt effectively on the systems.