Saya sibuk menulis skrip shell (menggunakan Bash) di mana saya perlu mengisi beberapa variabel dari hasil yang dikembalikan dari perintah lain.
Jadi saya menggunakan sintaks seperti ini:
VAR=`command 2>/dev/null`
Tetapi ketika mencari informasi tentang shell skrip, saya sering menemukan bahwa di atas dapat dicapai dengan menggunakan sintaks berikut juga:
VAR=$(command 2>/dev/null)
Keduanya bekerja untuk saya (saya telah menerima hasil yang diharapkan dalam kedua kasus) dan saya bertanya-tanya apakah saya masih dapat menggunakan kedua bentuk secara bergantian atau jika saya harus tetap menggunakan satu formulir untuk memastikan tetap mematuhi evolusi masa depan cangkang?
command-line
Justin
sumber
sumber
Jawaban:
Gunakan dolar. Backtick semi-usang , karena lebih rumit untuk digunakan (lihat tautan), dan tidak ada keuntungan bagi mereka kecuali Anda melakukan golf kode dan benar-benar perlu menyimpan satu karakter. Mereka mungkin tidak akan dihapus dari cangkang populer dalam waktu dekat, jadi Anda aman menggunakannya untuk saat ini.
sumber
Tetap dengan notasi tanda dolar
$()
kapan pun Anda bisa. Backtick menjadi rumit / membingungkan ketika Anda mulai perlu melakukan pengutipan bersarang. Ex:Mengganti backticks dengan
$()
menghasilkan output yang sama, dan lebih mudah dibaca (lebih sedikit kutipan dari sudut varrying untuk dilihat):Itu, dan setiap tanda kutip (kutipan tunggal, kutipan ganda, backtick) berarti sesuatu yang berbeda di shell, jadi menggunakan $ dapat membantu menghilangkan tingkat kompleksitas. Dan pengembang yang mengikuti Anda akan berterima kasih, karena dia akan memiliki waktu yang lebih mudah untuk mengetahui apa yang Anda lakukan.
sumber