Saya ingin dapat mengomentari satu bendera dalam satu perintah. Bash sepertinya hanya punya from # till end-of-line
komentar. Saya melihat trik seperti:
ls -l $([ ] && -F is turned off) -a /etc
Itu jelek, tapi lebih baik daripada tidak sama sekali. Apakah ada cara yang lebih baik?
Tampaknya ini berfungsi, tetapi saya tidak yakin apakah ini portabel:
ls -l `# -F is turned off` -a /etc
#comment
Trik ini juga disebutkan di sini: stackoverflow.com/questions/9522631/...${IFS#comment}
diperkenalkan oleh @pjh di komentar. Tidak ada sub-shell yang dipanggil.Jawaban:
Pilihan saya adalah:
Mengomentari dalam skrip Bash
sumber
$(#comment)
tidak berfungsi.)
sebagai bagian dari komentar itu sendiri. Sebagian besar tantangan bash adalah karena kompatibilitas retro dengan versi yang lebih lama, dan salah satu strategi umum adalah menggunakan solusi tertua yang mungkin.true && `# comment` && true
adalah ekspresi yang valid. Sebuah komentar nyata akan menghasilkan sesuatu seperti:syntax error near unexpected token
&& '`Saya merasa paling mudah (dan paling mudah dibaca) hanya menyalin garis dan mengomentari versi aslinya:
sumber
$(: ...)
sedikit kurang jelek, tapi tetap tidak baik.sumber
$(: ...)
sintaks sepertinya tidak memungkinkan untuk menyematkan komentar: sedangkanecho "foo" `# comment` "bar"
akan menghentikan komentar pada backtick kedua, padanan yang seharusnyaecho "foo" $(: # comment) "bar"
tidak menguraikan apa pun di belakang#
.Bagaimana kalau menyimpannya dalam variabel?
sumber
Inilah solusi saya untuk komentar sebaris di antara beberapa perintah yang disalurkan.
Contoh kode tanpa komentar:
Solusi untuk komentar pipa (menggunakan fungsi pembantu):
Atau jika Anda lebih suka, inilah solusi yang sama tanpa fungsi pembantu, tetapi ini sedikit berantakan:
sumber
Sebagian besar perintah memungkinkan arg untuk datang dalam urutan apa pun. Cukup pindahkan bendera yang dikomentari ke akhir baris:
Kemudian untuk mengaktifkannya kembali, cukup batalkan komentar dan hapus teks:
sumber
#
tanpa spasi tunggal setelah perintah. Terima kasih!Jika Anda tahu suatu variabel kosong, Anda bisa menggunakannya sebagai komentar. Tentu saja jika tidak kosong itu akan mengacaukan perintah Anda.
§ 10.2. Substitusi Parameter
sumber
${name:=comment}
untuk aman.Untuk menonaktifkan bagian dari perintah seperti
a && b
, saya cukup membuat skrip kosongx
yang ada di jalur, sehingga saya dapat melakukan hal-hal seperti:ketika saya perlu membangun, dan
saat tidak (menggunakan Ctrl + Adan Ctrl + Euntuk pindah ke awal dan akhir).
Seperti disebutkan dalam komentar, cara lain untuk melakukannya adalah Bash built-in
:
alih - alihx
:sumber
:
string; of; commands; : disabled; enabled;
Jika komentar itu layak untuk dibuat, mungkin komentar tersebut bisa masuk di akhir baris, atau pada baris sendiri. Saya jarang menemukan kebutuhan untuk komentar dalam-baris dengan kode sebelum dan sesudah komentar dalam bahasa apa pun.
Oh, ada satu pengecualian, yang merupakan dialek SQL yang biasanya saya gunakan yang menggunakan '{komentar}'. Kadang-kadang, saya akan menulis:
Tetapi bahkan itu adalah peregangan.
sumber