Backticks vs braces in Bash
The ``
is called Command Substitution and is equivalent to $()
(parenthesis), while you are using ${}
(curly braces).
So all of these expressions are equal and mean "interpret the command placed inside":
joulesFinal=`echo $joules2 \* $cpu | bc`joulesFinal=$(echo $joules2 \* $cpu | bc)# v v# ( instead of { v# ) instead of }
While ${}
expressions are used for variable substitution.
Note, though, that backticks are deprecated, while $()
is POSIX compatible, so you should prefer the latter.
From man bash
:
Command substitution allows the output of a command to replace thecommand name. There are two forms:
$(command) or `command`
Also, ``
are more difficult to handle, you cannot nest them for example. See comments below and also Why is $(...) preferred over ...
(backticks)?.
They behave slightly differently in specific case:
$ echo "`echo \"test\" `"test$ echo "$(echo \"test\" )""test"
so backticks silently remove the double quotes.