Bash Case Statement
3 min read
case statement is generally used to simplify complex conditionals when you have multiple different choices. Using the
case statement instead of nested
if statements will help you make your bash scripts more readable and easier to maintain.
switch statement. The main difference is that unlike the C
switch statement, the Bash
case statement doesn’t continue to search for a pattern match once it has found one and executed statements associated with that pattern.
In this tutorial, we will cover the basics of the Bash
case statement and show you how to use it in your shell scripts.
case Statement Syntax
case statement takes the following form:
case EXPRESSION in PATTERN_1) STATEMENTS ;; PATTERN_2) STATEMENTS ;; PATTERN_N) STATEMENTS ;; *) STATEMENTS ;; esac
casestatement starts with the
casekeyword, followed by the case expression and the
inkeyword. The statement ends with the
- You can use multiple patterns separated by the
)operator terminates a pattern list.
- A pattern can have special characters.
- A pattern and its associated commands are known as a clause.
- Each clause must be terminated with
- The commands corresponding to the first pattern that matches the expression are executed.
- It is a common practice to use the wildcard asterisk symbol (
*) as a final pattern to define the default case. This pattern will always match.
- If no pattern is matched, the return status is zero. Otherwise, the return status is the exit status of the executed commands.
Case Statement Example
Here is an example using the
case statement in a bash script that will print the official language of a given country:
#!/bin/bash echo -n "Enter the name of a country: " read COUNTRY echo -n "The official language of $COUNTRY is " case $COUNTRY in Lithuania) echo -n "Lithuanian" ;; Romania | Moldova) echo -n "Romanian" ;; Italy | "San Marino" | Switzerland | "Vatican City") echo -n "Italian" ;; *) echo -n "unknown" ;; esac
Save the custom script as a file and run it from the command line.
The script will ask you to enter a country. For example, if you type “Lithuania”, it will match the first pattern, and the
echo command in that clause will be executed.
The script will print the following output:
Enter the name of a country: Lithuania The official language of Lithuania is Lithuanian
If you enter a country that doesn’t match any other pattern except the default wildcard asterisk symbol, let’s say Argentina the script will execute the
echo command inside the default clause.
Enter the name of a country: Argentina The official language of Argentina is unknown
By now you should have a good understanding of how to write bash
case statements. They are often used to pass parameters to a shell script from the command line. For example, the init scripts are using
case statements for starting, stopping or restarting services.
If you have any questions or feedback, feel free to leave a comment.