Double parenthesis with and without dollar
Is $(...)
the same as (...)
in Bash?
Also, is $((...))
the same as ((...))
?
Also, is ${...}
the same as {...}
?
More generally what does the dollar sign stand for? Thank you.
-
$(...)
means execute the command in the parens in a subshell and return its stdout. Example:$ echo "The current date is $(date)" The current date is Mon Jul 6 14:27:59 PDT 2015
-
(...)
means run the commands listed in the parens in a subshell. Example:$ a=1; (a=2; echo "inside: a=$a"); echo "outside: a=$a" inside: a=2 outside: a=1
-
$((...))
means perform arithmetic and return the result of the calculation. Example:$ a=$((2+3)); echo "a=$a" a=5
-
((...))
means perform arithmetic, possibly changing the values of shell variables, but don't return its result. Example:$ ((a=2+3)); echo "a=$a" a=5
-
${...}
means return the value of the shell variable named in the braces. Example:$ echo ${SHELL} /bin/bash
-
{...}
means execute the commands in the braces as a group. Example:$ false || { echo "We failed"; exit 1; } We failed
More generally what does the dollar sign stand for?
It means whatever it means in the given context.
Adding to the answer above:
-
[..]
is used in conditions or logical expressions. Example:
$ VAR=2
$ if [ $VAR -eq 2 ]
> then
> echo 'yes'
> fi
yes
-
[[...]]
offers extended functionality to single square brackets. Particularly, it is useful for =~ operator (used in regular expressions). Example:
$ VAR='some string'
$ if [[ $VAR =~ [a-z] ]]; then
> echo 'is alphabetic'
> fi
is alphabetic
Reference:
https://linuxconfig.org/bash-scripting-parenthesis-explained