When writing shell scripts, it is often necessary to check if a directory exists before performing certain actions. Checking if a directory exists in a shell script can be done in a few different ways, and in this tutorial, you will learn some of these methods to check if a directory exists in bash shell script.
How To Check If a Directory Exists In Bash Shell Script
There are a few ways to check if a directory exists in a shell script, but the most commonly used methods involve the test
command or the [
command (also known as the test
built-in); are follows:
- Method 1: Using the Test Command
- Method 2: Using the Conditional Operator
- Method 3: Using the if statement with the ls command
Method 1: Using the Test Command
The test command is a command-line utility used to evaluate expressions and return a boolean value. One of the expressions that can be evaluated using the test command is the existence of a directory. The test command can be used in a shell script to check if a directory exists using the following syntax:
if [ -d /path/to/directory ]; then # directory exists else # directory does not exist fi
In this example, the -d
option is used to check if the specified path is a directory. If the path is a directory, the expression evaluates to true, and the code inside the if
block is executed. Otherwise, the code inside the else
block is executed.
Method 2: Using the Conditional Operator
The conditional operator is a shorthand way of writing if-else statements in shell scripts. The conditional operator can also be used to check if a directory exists in a shell script using the following syntax:
[ -d /path/to/directory ] && { # directory exists } || { # directory does not exist }
In this example, the [ -d /path/to/directory ]
expression is used to check if the specified path is a directory. If the path is a directory, the code inside the first block is executed. Otherwise, the code inside the second block is executed.
Method 3: Using the if statement with the ls command
The ls
command is a Unix utility used to list the contents of a directory. The ls
command can be used in a shell script to check if a directory exists using the following syntax:
if [ -n "$(ls -A /path/to/directory 2>/dev/null)" ]; then # directory exists and is not empty else # directory does not exist or is empty fi
In this example, the -n
option is used to check if the output of the ls
command is not empty. If the output of the ls
command is not empty, the code inside the if
block is executed. Otherwise, the code inside the else
block is executed. The 2>/dev/null
redirects the error output to /dev/null
to suppress error messages.
Conclusion
In conclusion, there are several ways to check if a directory exists in a shell script. The test command, the conditional operator, and the ls
command can all be used to achieve this. Choose the method that works best for your specific use case and remember to handle both the cases where the directory exists and when it does not exist.