Bash Script - Command Substitution
Last Updated :
31 Jul, 2023
In order to understand command substitution, let us first discuss substitution in shell scripts. Substitution is a functionality by following which we can instruct the shell to substitute the actual value of an expression.
Example:
In the program below we have firstly created variable str and assigned it with the value "GeeksforGeeks" and then substituted the value of the string str ("GeeksforGeeks") in the echo command.
Creating a script. (you can replace `mystript` with the desired name)
vim mystript.sh
Making script executable.
chmod +x mystript.sh

#!/bin/sh str='GeeksforGeeks'echo -e "str: $str"
Run the script
./mystript.sh
Output:

This article focuses on the command substitution technique used in a Bash script.
There are some sequences of characters that don't represent their true nature but they have special meaning to the operating system and these sequences are known as escape sequences. When they are used in a command, they are replaced by actual values.
|
\n | new line |
\r | carriage return |
\t | horizontal tab |
\b | backspace |
\\ | backslash |
Command Substitution
Command substitution is a mechanism that is followed by programmers in a bash script. In this mechanism, the output of a command replaces the command itself. Bash operates the expansion by executing a command and then replacing the command substitution with the standard output of the command. In simple words, the output of a UNIX command is bundled and then used as a command.
To understand it in a better way, let us consider an example. The seq command in Linux is used to print numbers from START to END in steps of INCREMENT.
Syntax:
seq START INCREMENT END
Return type:
Print numbers from START to END each in the new line by the difference of INCREMENT.
Example:
In the below script we are printing numbers from 2 to 20 with a difference of 2. In other words, we are printing even numbers up to 20.
Creating a script. (you can replace `main` with desired name)
vim main.sh
Making script executable.
chmod +x main.sh

#!/bin/bash# your code goes here seq 2 2 20
Run the script
./main.sh
Output:

We can use the output of the above command as a new command. Consider the below script,
Example:

#!/bin/bash# your code goes here echo $(seq 2 2 20)
Output:

Variables and command expansion
During the process of command substitution, the output of the command can be assigned to a variable, just like any other value.
Example:
In the below script we have assigned the result of the echo command to both the strings in variables, "varaiable1" and "variable2" respectively. Then we used these variables in the echo command.
Creating a script. (you can replace `main` with desired name)
vim main.sh
Making script executable.
chmod +x main.sh

#!/bin/bashvariable1=$(echo 'Full form of gfg is' )variable2=$(echo 'GeekforGeeks')echo "$variable1 : $variable2"
Run the script
./main.sh
Output:

Loss of newlines in command substitution
In the command substitution mechanism, If the output of a command that is being substituted contains any trailing newlines, then in that case the trailing newlines are deleted after the substitution. Note that embedded newlines are not deleted, but they might be removed during word splitting.
Example:
In this script, we are using the seq command. Now seq command prints numbers to the console and appends a newline character after each number is printed to the console.

#!/bin/bash# your code goes here seq 1 2 19
Output:

Example:
In this script, we have used the result of the above command and substituted it in the command. As you can see in the output, numbers from 1 to 19 with the difference of 2 are printed to console. But this time they all are printed on the same line that is without any newline character.

#!/bin/bash# your code goes here echo $(seq 1 2 19)
Output:

Conclusion
In this article we discussed Bash Script - Command Substitution which is a useful trick that helps us take the result of one command and use it in another. We can store the command's output in a variable or use it directly in a new command. It makes your scripts more flexible and efficient, automating tasks easily. Just remember that sometimes newlines may disappear from the output, so be careful with formatting. With command substitution, our Bash scripts become more powerful and can do things quickly and effectively.
Similar Reads
Shell Scripting - Command Substitution A shell is an interface that helps users to connect with the system. Using a shell is equivalent to indirectly communicating with the operating system. In Linux distributed systems, each time we use the terminal, we connect with a shell. The job of a shell is to analyze Unix commands or instructions
4 min read
Bash Scripting - Bash Echo Command In this article, we are going to see the echo command. The Echo command is a built-in command feature for Unix / Linux which is generally used to display the text or message on the screen. Syntax : $ echo [option][text]For Example : $ echo Geeks For GeeksOutput : Geeks For GeeksOutputThere are gener
2 min read
Shell Scripting - Substitution There are certain expressions that convey special meanings. In other words, they are not what they look like. A shell carries out substitution whenever it encounters such expressions. Hence, substitution is defined as a mechanism carried out by a shell in which it substitutes the value of an express
3 min read
25 basic Ubuntu Commands Ubuntu is one of the most popular distributions of Linux, known for its user-friendly interface and robust features. Whether you're a beginner or an experienced user, understanding basic Ubuntu commands is essential for navigating and managing your system efficiently.1. pwd - Print Working Directory
6 min read
Bash Scripting - String Bash String is a data type similar to integer or boolean. It is generally used to represent text. It is a string of characters that may also contain numbers enclosed within double or single quotes. Example: "geeksforgeeks", "Geeks for Geeks" or "23690" are strings Creating a String A basic declarati
2 min read
Shell Scripting - Test Command A test command is a command that is used to test the validity of a command. It checks whether the command/expression is true or false. Here, we will walk through the syntax, key operators, and practical examples to effectively use the test command.What is the Test Command?The test command is primari
9 min read