Ada dua sintaks untuk substitusi perintah:dengan tanda kurung dolar dan backticks.
Menjalankan top -p $(pidof init)
dan top -p `pidof init`
memberikan keluaran yang sama. Apakah kedua cara ini melakukan hal yang sama, atau adakah perbedaan?
Jawaban yang Diterima:
Kutipan balik gaya lama ` `
lakukan perlakukan garis miring terbalik dan bersarang sedikit berbeda. $()
style gaya baru menafsirkan segala sesuatu di antara ( )
sebagai perintah.
echo $(uname | $(echo cat))
Linux
echo `uname | `echo cat``
bash: command substitution: line 2: syntax error: unexpected end of file
echo cat
berfungsi jika backquotes bersarang diloloskan:
echo `uname | `echo cat``
Linux
backslash menyenangkan:
echo $(echo '\')
\
echo `echo '\'`
$()
style gaya baru berlaku untuk semua shell yang sesuai dengan POSIX.
Seperti yang ditunjukkan mouviciel, ` `
gaya lama mungkin diperlukan untuk shell yang lebih tua.
Terlepas dari sudut pandang teknis, ` `
. gaya lama juga memiliki kelemahan visual:
- Sulit untuk diperhatikan:
I like $(program) better than `program`
- Mudah bingung dengan satu kutipan:
'`'`''`''`'`''`'
- Tidak begitu mudah untuk mengetik (bahkan mungkin tidak pada tata letak standar keyboard)
(dan SE menggunakan ` `
untuk tujuan sendiri, itu menyakitkan menulis jawaban ini