Jawaban singkat
Mengingat sintaks $(command) &, hasilnya adalah sama seperti jika Anda mengambil output dari berjalan hanya commanddan kemudian mencoba untuk menjalankan bahwa sebagai perintah. Dan semua ini akan dilakukan di latar belakang, artinya tidak akan ada output yang terlihat atau tergantung di terminal.
Misalnya, jika kami memiliki file teks bernama mycommand.txtdengan konten:
echo "Hello World"
Lalu perintahnya
$(cat mycommand.txt) &
akan setara dengan berjalan
echo "Hello World" &
Tetapi karena kita menambahkan ampersand ( &), kita tidak akan melihat output dari perintah ini, jadi itu akan sangat tidak berguna dalam contoh ini.
Jawaban Panjang (Penjelasan)
Tanda dolar $(Variabel)
Tanda dolar sebelum tanda kurung biasanya merujuk pada variabel. Ini berarti bahwa perintah ini memberikan argumen ke variabel itu dari skrip bash atau mendapatkan nilai variabel itu untuk sesuatu. Perbedaan dalam skrip bash untuk memanggil dan mendeklarasikan variabel seperti:
Deklarasikan variabel tanpa tanda dolar dan sebut dengan tanda dolar. Misalnya, skrip yang berisi ini
#!/bin/bash
STR="Hello World!"
echo $STR
Akan menampilkan ini
Hello World!
Parenthesis ()- Substitusi perintah
Substitusi perintah memungkinkan output dari suatu perintah untuk menggantikan perintah itu sendiri. Substitusi perintah terjadi ketika perintah terlampir sebagai berikut:
$(command)
atau
`command`
Bash melakukan ekspansi dengan mengeksekusi perintah di lingkungan subkulit dan mengganti substitusi perintah dengan output standar dari perintah, dengan setiap baris baru yang tertinggal dihapus. Baris baru yang disematkan tidak dihapus, tetapi mereka dapat dihapus selama pemisahan kata. Substitusi perintah $(cat file)dapat diganti dengan yang setara tetapi lebih cepat $(< file).
Ampersand &- Proses latar belakang
Dan kemudian ampersand, atau &simbol, seperti yang Anda katakan, digunakan untuk menjalankannya di latar belakang.
$( ), tetapi tidak ada istirahat. Hanya saja$(command) &, itulah yang membingungkan saya.