$(cmd)
mengganti hasil dari cmd
sebagai string, sedangkan (cmd; cmd)
jalankan daftar perintah dalam subproses.
Jika Anda ingin memasukkan keluaran dari satu atau lebih perintah ke dalam variabel, gunakan formulir $( cmd ).
Namun jika Anda ingin menjalankan sejumlah perintah dan memperlakukannya sebagai satu unit, gunakan formulir ().
Yang terakhir berguna saat Anda ingin menjalankan serangkaian perintah di latar belakang:
(git pull; make clean; make all) &
Itu adalah hal yang berbeda.
$()
mengevaluasi ekspresi (mengeksekusi perintah) seperti `` (backticks)
> (echo ls)
ls
> $(echo ls)
file1 file2
> `echo ls`
file1 file2
> echo $(echo ls)
ls
Keduanya berbeda, tetapi ada hubungan mnemonik di antara keduanya.
(...)
adalah perintah yang memulai subkulit baru tempat perintah shell dijalankan.
$(...)
adalah ekspresi yang memulai subkulit baru, yang perluasannya merupakan keluaran standar yang dihasilkan oleh perintah yang dijalankannya.
Ini mirip dengan pasangan perintah/ekspresi lain di bash
:((...))
adalah pernyataan aritmatika, sedangkan $((...))
adalah ekspresi aritmatika.