Baru-baru ini, saya menemukan jenis komentar multiline yang belum pernah saya lihat sebelumnya - ini adalah contoh skrip:
echo a
#
: aaa
: ddd
#
echo b
Ini tampaknya berhasil, bahkan vim
sintaks-menyoroti itu. Apa sebutan gaya komentar ini dan bagaimana cara menemukan lebih banyak info tentangnya?
bash
shell-script
Wiesław Herr
sumber
sumber
CommentedOutBlock() { echo "test"; }
Jawaban:
Itu bukan komentar multi-baris.
#
adalah komentar satu baris.:
(titik dua) bukan komentar sama sekali, melainkan perintah built-in shell yang pada dasarnya adalah NOP , operasi null yang tidak melakukan apa-apa kecuali mengembalikan true, sepertitrue
(dan dengan demikian menetapkan$?
ke 0 sebagai efek samping). Namun karena itu adalah perintah, ia dapat menerima argumen, dan karena mengabaikan argumennya, dalam kebanyakan kasus ia bertindak secara dangkal seperti komentar. Masalah utama dengan lumpur ini adalah argumen masih diperluas, yang mengarah ke sejumlah konsekuensi yang tidak diinginkan. Argumen masih dipengaruhi oleh kesalahan sintaksis, pengalihan masih dilakukan sehingga: > file
akan terpotongfile
, dan: $(dangerous command)
substitusi akan tetap berjalan.Cara yang paling tidak mengejutkan yang sepenuhnya aman untuk memasukkan komentar dalam skrip shell adalah dengan
#
. Tetap berpegang pada itu bahkan untuk komentar multi-line. Jangan pernah mencoba (ab) menggunakan:
komentar. Tidak ada mekanisme komentar multisaluran khusus di shell yang analog dengan/* */
bentuk bintang-slash dalamC
bahasa yang mirip.Demi kelengkapan, tetapi bukan karena itu adalah praktik yang disarankan, saya akan menyebutkan bahwa dimungkinkan untuk menggunakan dokumen-dokumen di sini untuk melakukan "komentar" multi-baris:
sumber
<<
telepon - yang mematikan subtitusi dan ekspansi.:
hal-hal yang seharusnya menjadi komentar akan menyebabkan konsumsi RAM / CPU tambahan. Itu tidak akan penting untuk hal-hal sederhana di desktop Anda, tetapi jika itu sesuatu yang dieksekusi ratusan atau ribuan kali per detik Anda tidak akan melakukan apa-apa, sangat cepat .: <<=cut
memungkinkan untuk menulis POD dalam skrip shell, lihat contoh ini untuk detailnya . Ini memungkinkan untuk digunakanperldoc script.sh
. Namun, komentar multi-baris yang ditunjukkan dalam jawaban ini adalah sesuatu yang pasti harus menjadi blok komentar (setiap baris dimulai dengan#
).Itu bukan gaya berkomentar. yang
:
built-in command tidak apa-apa; itu disalahgunakan karena berkomentar di sini.sumber
Pada awalnya, titik dua adalah satu-satunya cara untuk membuat komentar.
Namun, itu bukan komentar yang benar, karena baris diuraikan dengan cara yang persis sama seperti perintah lain diuraikan, dan itu mungkin memiliki efek samping. Sebagai contoh:
(Terkadang usus besar digunakan hanya untuk tujuan memunculkan efek samping itu, tetapi kemudian tidak digunakan sebagai komentar.)
Terkadang nyaman menggunakan tanda titik dua untuk mengomentari bagian skrip:
Ini adalah penghemat waktu yang hebat dibandingkan dengan mendahului setiap baris
#
, terutama jika komentar hanya bersifat sementara.sumber
/* */
dan ugh, jangan mulai saya<!-- -->
!Jika komentar Anda di akhir skrip, Anda dapat melakukannya seperti ini:
sumber