Substitusi Perintah
Pilihan lain adalah dengan menggunakan Substitusi Perintah . Membungkus perintah $()
akan menjalankan perintah dan mengganti perintah dengan outputnya.
cat $(find ./inhere -size 1033c 2> /dev/null)
akan menjadi
cat ./inhere/file1 .inhere/file3
Ini kurang lebih setara dengan menggunakan gaya pembungkus yang lebih tua dengan kutu belakang:
cat `find ./inhere -size 1033c 2> /dev/null`
Lebih detail dari dokumen yang ditautkan di atas
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)
.
Ketika bentuk backquote gaya lama substitusi yang digunakan, backslash mempertahankan arti harfiahnya kecuali jika diikuti oleh $
, `
atau \
. Backquote pertama yang tidak diawali dengan backslash mengakhiri substitusi perintah. Saat menggunakan $(command)
formulir, semua karakter di antara tanda kurung membuat perintah; tidak ada yang diperlakukan secara khusus.
Pergantian perintah dapat disarangkan. Untuk bersarang saat menggunakan formulir backquoted, lepas backquotes dalam dengan backslash.
Jika substitusi muncul dalam tanda kutip ganda, pemisahan kata dan ekspansi nama file tidak dilakukan pada hasil.
Lihat jawaban lain ini untuk beberapa contoh penggunaan yang baik.