Apa yang dilakukan $ (perintah) &?

10

Saya melihat sintaks berikut dalam skrip bash:

 >$(command) &

Saya tahu bahwa ampersand &pada akhirnya membuat perintah berjalan di latar belakang, tetapi saya belum pernah melihatnya dalam kombinasi dengan tanda dolar ditambah tanda kurung di sekitar perintah.

Apa fungsinya?

Alpha Omega
sumber
Saya tahu penggunaan semacam itu $( ), tetapi tidak ada istirahat. Hanya saja $(command) &, itulah yang membingungkan saya.
AlphaOmega

Jawaban:

20

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.

TheOdd
sumber
2

dibutuhkan output dari "command" sebagai perintah dan menjalankannya di latar belakang. Secara fungsional sebanding dengan "eval"

mereka
sumber
Ini adalah simbol yang ada di jendela terminal yang tergantung pada apa yang Anda coba lakukan mungkin tidak diperlukan untuk masuk oleh Anda. Ketika Anda membuka terminal, Anda akan segera melihatnya di sana.
monkeyman_stones
Saya tidak mengerti. Meskipun singkat, ini menjawab pertanyaan aktual sedangkan jawaban yang diterima tidak.
mveroone