Apakah ada cara sederhana untuk mengomentari blok kode dalam skrip shell?
Apakah ada cara sederhana untuk mengomentari blok kode dalam skrip shell?
Jawaban:
Dalam bash:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
The 'dan 'sekitar ENDpembatas yang penting, jika tidak hal di dalam blok seperti misalnya $(command)akan diurai dan dijalankan.
EOFadalah contoh klasik (dan demikian juga !, tanda seru sendiri), tetapi Anda dapat menggunakan SNURFLE_BURGERSatau classical_end_markeratau kata lain yang tidak muncul pada baris sendiri di bahan komentar. Saya akan berani bereksperimen dengan spasi dll, tetapi kata itu mungkin bekerja dengan baik juga.
: ) yang tidak membaca inputnya dan selalu keluar dengan nilai yang sukses, dan mengirimkan "komentar" sebagai input. Tidak banyak.
Tidak ada blok komentar pada skrip shell.
Menggunakan vi(ya, vi) Anda dapat dengan mudah berkomentar dari baris n ke m
<ESC>
:10,100s/^/#/
(yang berbunyi, dari baris 10 hingga 100 mulai baris pengganti (^) dengan tanda #.)
dan batalkan komentar dengan
<ESC>
:10,100s/^#//
(yang berbunyi, dari baris 10 hingga 100 mulai garis pengganti (^) diikuti oleh # dengan mencatat //.)
vihampir universal di mana pun ada /bin/sh.
|nohke akhir. Pipa memisahkan perintah tambahan dan nohuntuk nohighlight. Penandaan istilah pencarian akan secara otomatis dilanjutkan saat berikutnya Anda mencari sesuatu. Contoh::10,100s/^/#/g|noh
<SHIFT>+G 10 <ENTER>saat itu 0atau dengan cara lain untuk menavigasi). Kemudian gunakan <CTRL>+Vuntuk masuk ke mode blok visual dan sorot awal semua baris yang ingin Anda komentari (dalam contoh ini 90 J). Kemudian tekan SHIFT+Iuntuk menyisipkan sebelum blok yang disorot. Masukkan tanda komentar (mis. #) Dan tekan <ESC>untuk menyelesaikan awalan Anda. Penjelasan ini kedengarannya sangat panjang, tetapi dalam pengalaman saya itu jauh lebih cepat dalam praktek.
Kamu bisa memakai:
if [ 1 -eq 0 ]; then
echo "The code that you want commented out goes here."
echo "This echo statement will not be called."
fi
if [ ];juga berfungsi.
if false;. stackoverflow.com/a/18019516/2097284
Berikut harus bekerja untuk sh, bash, kshdanzsh .
Blok kode yang akan dikomentari dapat dimasukkan ke dalam BEGINCOMMENTdan ENDCOMMENT:
[ -z $BASH ] || shopt -s expand_aliases
alias BEGINCOMMENT="if [ ]; then"
alias ENDCOMMENT="fi"
BEGINCOMMENT
echo "This line appears in a commented block"
echo "And this one too!"
ENDCOMMENT
echo "This is outside the commented block"
Menjalankan kode di atas akan menghasilkan:
This is outside the commented block
Untuk membatalkan komentar , blok kode dengan demikian berkomentar
alias BEGINCOMMENT="if : ; then"
dari pada
alias BEGINCOMMENT="if [ ]; then"
dalam contoh di atas.
jika Anda dapat menghindari tanda kutip tunggal:
__='
blah blah comment.
'
Gunakan : 'untuk membuka dan 'menutup.
Sebagai contoh:
: '
This is a
very neat comment
in bash
'
Ini dari contoh Vegas yang ditemukan di sini
Di Vim:
shift-V (masuk mode visual), ke atas sorot garis di blok:s/^/#/perintahnya akan terlihat seperti ini:
:'<,'>s/^/#tekan enter
misalnya
shift-V
jjj
:s/^/#
<enter>
:s/^#/
Anda bisa menggunakan mode Blok Visual Vi / Vim yang dirancang untuk hal-hal seperti ini:
Ctrl-V
Highlight first element in rows you want commented
Shift-i
#
esc
Uncomment akan menjadi:
Ctrl-V
Highlight #'s
d
l
Ini adalah cara interaktif vi dalam melakukan hal semacam ini daripada menghitung atau membaca nomor baris.
Terakhir, di Gvim Anda menggunakan ctrl-q untuk masuk ke mode Visual Block daripada ctrl-v (karena itu cara pintas untuk menempel).
Dalam semua kejujuran, mengapa terlalu banyak rekayasa ...
Saya menganggap itu benar-benar praktik buruk untuk menulis kode aktif untuk menghasilkan kode pasif.
Solusi saya: kebanyakan editor memiliki mode pilih blok. Cukup gunakan itu untuk menambahkan # ke semua baris yang ingin Anda komentari. Apa masalahnya...
Contoh notepad:
Untuk membuat: Alt - mousedrag ke bawah, tekan #.
Untuk menghapus: Alt-mousedrag ke bawah, geser ke kanan, hapus.
Variasi pada trik di sini-doc dalam jawaban yang diterima oleh sunny256 adalah dengan menggunakan kata kunci Perl untuk komentar. Jika komentar Anda sebenarnya semacam dokumentasi, Anda kemudian dapat mulai menggunakan sintaks Perl di dalam blok komentar, yang memungkinkan Anda untuk mencetaknya dengan format yang bagus, mengonversinya menjadi halaman manual, dll.
Sejauh shell yang bersangkutan, Anda hanya perlu mengganti 'END'dengan '=cut'.
echo "before comment"
: <<'=cut'
=pod
=head1 NAME
podtest.sh - Example shell script with embedded POD documentation
etc.
=cut
echo "after comment"
(Ditemukan di " Menanamkan dokumentasi dalam skrip shell ")
Mode lain adalah: Jika editor Anda TIDAK MEMILIKI opsi komentar,
DIBUAT
itu BEKERJA dengan editor APAPUN
Saya suka satu baris buka dan tutup:
if [ ]; then ##
...
...
fi; ##
'##' membantu saya dengan mudah menemukan awal dan akhir dari komentar blokir. Saya dapat menempel nomor setelah '##' jika saya punya banyak dari mereka. Untuk mematikan komentar, saya hanya menempelkan '1' di '[]'. Saya juga menghindari beberapa masalah yang saya alami dengan tanda kutip tunggal di blok komentar.