-2

I'm new to shell. And I'm a little bit confused with the usage of (),[],{} in shell script like $() ,[ [] ], ${} and so on. I want to classify their usage to learn shell script more efficiently.

Yuan Wen
  • 1,583
  • 3
  • 20
  • 38

1 Answers1

13

[ ] vs [[ ]] are test operators
See What's the difference between [ and [[ in bash? for a good overview on their differences.

$() is command substitution

$ echo "my hostname is: $(hostname)"
my hostname is: MYPC

$(( )) is arithmetic expansion

$ echo "$(( 5 + 5 ))"
10

${ }
This is used to refer to variables and avoid confusion over their name.

$ v="hello"
$ echo "$vbye"

$ echo "${v}bye"
hellobye

Also, it is used to reference array elements:

$ declare -A my_arr
$ my_arr[a]="hello"
$ echo "${my_arr[a]}"
hello

( ) and { } are also used as grouping commands

( ) runs in a subshell:

$ v=5
$ ( v=2; echo "$v" )
2
$ echo "$v"
5

Whereas { list, } does not:

$ v=5
$ { v=2; echo "$v"; }
2
$ echo "$v"
2
MetalGodwin
  • 3,784
  • 2
  • 17
  • 14
fedorqui
  • 275,237
  • 103
  • 548
  • 598