How to Write If Statement in One Line? [2 Easy Ways]

LINUX
FUNDAMENTALS
A Complete Guide for Beginners Enroll Course Now

The one-line ‘if’ statement in Bash condenses the conditional execution of any code into a single line, making it easier to use in scripts or on the command line and facilitating portability. It allows for quick conditional checks and execution of commands. In this effort, Bash offers two different ways to represent the if statement in one line including the use of test command or [ ] and ternary operator. Navigate through the whole article to learn how to use an if condition in a one-line statement in Bash.

What is One Liner If in Bash?

One liner ‘if’ in Bash is a compressed way to execute an ‘if’ conditional check within a single coded line. Basically, when the logic is short and straightforward, the one liner if statements are used to keep the conciseness and brevity of the Bash code. You can use any conditional operator within this one-liner if statement for your conditional check.

To execute the if statements as a one-liner code, separate commands by putting the semicolon (;) in the following manner:

if [ condition ]; then command; fi

Writing One-Line Code Over Multiline If Statements

Writing one-line code over multiline if statements is convenient when readability is not considered significantly. To practically figure out how a multiline ‘if’ conditional structure can be converted to a single-line code, check out the following examples:

Multiline Structure:

#!/bin/bash

num1=2
num2=5

if [ "$num1" -lt "$num2" ]; then
echo "Number1 is less than Number2."
fi

Inline Structure:

#!/bin/bash

num1=2
num2=5

if [ "$num1" -lt "$num2" ]; then echo "Number1 is less than Number2."; fi

Multiline if statements are better for larger scripts. Because in this case, one line if statement increases the complexity of the code and may lead to syntax errors.

2 Ways to Write Bash If Conditional Statement in One-Line

There are two ways to write an ‘if’ condition in one line in Bash such as using the test command (or the equivalent ‘[ ]’) and ternary operator. In the following section, I will discuss these 2 methods to express the if conditional statements in one line:

1. Using “[ ]” or “test” Command for a Single Conditional Check

The test command or the equivalent single square brackets [ ] within an ‘if’ statement is used to check whether a given conditional expression is satisfied. If the condition is satisfied or true, it executes an exit status of zero (0). Otherwise, it returns nothing.

Go through the following script to verify whether the strings are not equal using the if statement in one line structure:

#!/bin/bash

if [ "linuxsimply" != "softeko" ]; then echo "Strings are not equal"; fi

EXPLANATION

Here, the if statement followed by the semicolon ; checks if the two strings ‘linuxsimply’ and ‘softeko’ are not equal. If the strings are not equal, it returns a true expression with an output message “Strings are not equal”.

Writing bash if condition in one line using single square brackets "[ ]"

In the above image, you can see that the strings are not equal.

Note: You can encase the whole one-line if statement within parentheses () to create a subshell for the commands within the statement. For example:

(if [ -f "$file_name" ]; then echo "The file exists and is a regular file."; fi)

Generally, the changes to variables inside parentheses may not affect the variables outside the parentheses.

2. Using Ternary Operators for Multiple Conditional Check

Using the ternary operator (AND && and OR ||) in Bash is a concise way to express a simple conditional expression within a single line. The basic format a ternary operator follows:

[condition] && [true_expression]

If the condition becomes true, the true_expression associated with the AND operator will be executed. Otherwise, nothing will be executed.

To write the if statement in one line using ternary operators, check out the following script:

#!/bin/bash

#Defining variables
age=25
is_voter=true

#Using the ternary operator
[ "$age" -ge 18 ] && [ "$is_voter" == true ] && echo "You are an adult and can vote."

EXPLANATION

Here, the script checks whether the two conditions are satisfied. If both conditions are satisfied, it returns a true expression and the statement after && “You are an adult and can vote.” is executed.

Writing bash if condition in one line using ternary operator

From the image, you can see that both the assigned conditions are true.

Conclusion

So far, you have understood the benefits of writing code within the if statement in one line over multiline structures. Additionally, you have learned about two methods to use the Bash if conditional statement into one line. So, keep practicing this to become a proficient Bash scripter!

People Also Ask

When should I use one-liner ‘if’ statements?

When the conditions are short and simple and you need a straightforward way to execute commands without compromising the readability, use the one-liner ‘if’ statements. But when the conditions are too complex, it’s better to go for multiline ‘if’ statements.

Can I nest ‘if’ statements in one line?

Yes, technically, you can nest ‘if’ statements in one line but it is ineffective as it reduces the readability of the code. So, it’s recommended to avoid the one-liner nested ‘if’ statements in complex code to maintain clarity.

Are one-liner ‘if’ statements suitable for large scripts?

No, one-liner ‘if’ statements are not suitable for large scripts because they might reduce scripts’ readability and clarity.

When should I avoid using one-liner ‘if’ statements in Bash scripts?

You should avoid using one-liner ‘if’ statements in scenarios like complex conditional logic, and nested structures in Bash scripts.

Related Articles


<< Go Back to If Statement in Bash | Bash Conditional Statements | Bash Scripting Tutorial

5/5 - (11 votes)
Nadiba Rahman

Hello, This is Nadiba Rahman, currently working as a Linux Content Developer Executive at SOFTEKO. I have completed my graduation with a bachelor’s degree in Electronics & Telecommunication Engineering from Rajshahi University of Engineering & Technology (RUET).I am quite passionate about crafting. I really adore exploring and learning new things which always helps me to think transparently. And this curiosity led me to pursue knowledge about Linux. My goal is to portray Linux-based practical problems and share them with you. Read Full Bio

Leave a Comment