BASH Programming

What Does “ ||” Mean? (Double Pipe) – Bash

The double pipe (“||”) is a control operator that represents the logical OR operation. It is used to execute a command or series of commands only if the previous command or pipeline has failed or has returned a non-zero status code. This guide will discuss the use of what this double pipe means and how it is used in bash scripting so read this guide if you are interested.

What Does “||” Mean? (Double Pipe)

The double pipe operator evaluates to true if either of the expressions on either side of it is true, and false otherwise. This means that if one of the expressions is true, the other expression does not need to be evaluated. If both expressions are false, then the operator evaluates to false, so here is the syntax for it:

OR Operation Truth Table
0 0 0
0 1 1
1 0 1
1 1 1

The syntax for using double pipe.

<command1> || <command2>

To further illustrate I have created a bash script that runs without double pipe and check the exit status to see if the command is executed or not, below is the code for it:

#!/bin/bash

# Attempt to remove a file
rm /home/aaliyan/bashfile44.sh

if [ $? -ne 0 ]; then
  # The previous command failed, so print an error message
  echo "File could not be removed"
else
  # The previous command succeeded, so print a success message
  echo "File removed"
fi

In this example, the rm command is used to remove a file. If the file cannot be removed or it does not exist, Bash will execute the echo command to print an error message. To check the exit status of removal command the if statement is used, which is stored in the special shell variable $?. If the exit status is nob zero number in case if the command fails then the error message is printed like this:

Similarly if the file exit and is removed then the output will be like this:

Now here is same bash script that removes the file but, in this script, I have used the double pipe operator and one can see the code has become easier to understand and readable:

#!/bin/bash

# Attempt to remove a file, and print an error message if it fails
rm /path/to/file || echo “File could not be removed”

In this code, the rm command is executed, and if it fails, the echo command is executed to print the error message and here it’s the output of this script if it fails:

Now in the first script, an if statement is used to check the exit status of the rm command, and then the error message is printed if the command fails. This approach is more verbose and requires more lines of code. Additionally, it is possible to forget to check the exit status of a command, which can result in bugs or unexpected behavior in your script.

Whereas in the second script, I have used the “||” operator to simplify the error handling. The echo command is executed only in case if the rm command fails as in that case the first input is false. This approach is more concise and easier to read, and it ensures that the error message is always printed if the command fails.

In general, it’s a good practice to use the “||” operator in your bash scripts to simplify your code and make it more readable. It’s important to note, however, that this operator only works for simple cases of error handling, and in more complex scenarios, you may need to use more advanced techniques.

Similarly, if the file is removed the double pipe operator would not execute the other condition and will just terminate so here if there are exits a file then:

Conclusion

The “||” (double pipe) operator in Bash is a useful control operator that can simplify shell scripts by allowing for conditional execution of commands based on the success or failure of previous commands. This guide gives extensive details on what this operator means and how it can be used in bash script with the help of examples.

About the author

Aaliyan Javaid

I am an electrical engineer and a technical blogger. My keen interest in embedded systems has led me to write and share my knowledge about them.