BASH Programming

Difference Between ${} and $() in Bash

One of the key features of Bash is its ability to use different types of syntax to perform different tasks. Two of these syntaxes are the ${} and $() syntaxes, which are often used interchangeably but have different uses, this article will explore the differences between ${} and $() in Bash.

${} in Bash – Parameter Expansion

The ${} syntax also known as parameter expansion is used to access the value of a variable in Bash, it is also used to perform various parameter expansions, such as substring extraction, case modification, and pattern matching. Further below is the syntax for using ${} in bash scripting:

${variable}

Here is an example that demonstrate the use of this syntax:

#!bin/bash

name="Mark"

echo "My name is ${name}"

In the example above, the ${name} syntax is used to access the value of the name variable and include it in the output string:

$() in Bash – Command Substitution

The $() syntax also called command substitution, on the other hand, is used to execute a command and capture its output, the syntax is as follows:

$(command)

Here is an example of how to use the $() syntax:

#!bin/bash

files=$(ls)

echo "The files in the current directory are: ${files}"

Here the $() syntax is used to execute the ls command and capture its output in the files variable. Whereas the ${} syntax is then used to include the list of files in the output string:

Overall, the ${} syntax is used to access the value of a variable, while the $() syntax is used to execute a command and capture its output. Both syntaxes have different uses and are not interchangeable.

Conclusion

Understanding the differences between ${} and $() in Bash is essential for effective shell scripting, while both syntaxes may look similar, they have different functions and should be used accordingly. By using the right syntax for the right task, you can improve the efficiency and readability of your Bash scripts.

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.