Saat membuat skrip shell menggunakan jalur pipa, dan menggunakan garis miring terbalik untuk melanjutkan baris, saya ingin menyisipkan komentar pada baris terpisah , dengan cara yang kuat, mudah dibaca, dan portabel.
Misalnya, dengan perintah multi-line yang tidak diomentari ini (dicuri dari @DigitalRoss untuk kejelasannya):
echo abc |
tr a-z A-Z |
sort |
uniq
... di bawah ini secara estetika paling dekat dengan apa yang ingin saya capai, tetapi karena alasan yang jelas, tidak berhasil ... dan ya, saya sadar bahwa ini bukan sesuatu yang biasanya layak dikomentari:
# Perform critical system task.
# NOTE - An example of what does *not* work.
echo abc |
# Convert lowercase to uppercase.
tr a-z A-Z |
# Sort the results.
sort |
# Only show unique lines.
uniq
Jawaban terkait yang ada tampaknya tidak memuaskan bagi saya , sebagai berikut:
Pertama, jawaban glenn jackman (menambahkan argumen ke array, dan kemudian mengeksekusi array) bekerja untuk perintah tunggal, tetapi tidak berfungsi untuk pipelining (dan bahkan jika itu dilakukan, itu menambah kompleksitas yang ingin saya hindari).
Kedua, jawaban @Gilles 'di sini (yang menggunakan :
) juga tampaknya tidak berfungsi dengan pipelining, karena itu mengubah aliran pipa:
$ echo "abc" | :
$
( CATATAN : Jika ada yang setara dengan:
yang melewati keluaran yang tidak dimodifikasi, itu akan secara estetika dapat diterima, tetapi saya belum dapat menemukan satu. Saya dapat menulis yang khusus, tetapi itu akan mengurangi portabilitas.)
Akhirnya, bagian terakhir dari jawaban DigitalRoss pada StackOverflow berfungsi dengan baik untuk menambahkan komentar pada baris yang sama, tetapi saya sangat suka komentar pada baris yang berbeda. Jika tidak, ketika garis memiliki panjang yang sangat bervariasi, keterbacaan berkurang:
echo abc | # normal comment OK here`
/usr/local/bin/really/long/path/ridiculously-long-filename.sh | # another normal comment OK here
sort | # the pipelines are automatically continued
uniq # final comment
Saya mencari jawaban yang menjaga keterbacaan dan meminimalkan kompleksitas, atau latar belakang mengapa apa yang saya cari tidak mungkin.
i++; // increment i by one
. Saya sarankan Anda membaca "Elemen Gaya Pemrograman"Jawaban:
Bagaimana dengan ini?
(Garis miring terbalik harus digunakan sebagai karakter terakhir dalam baris tersebut.) Saya tidak yakin tentang portabilitas dari pendekatan itu, tetapi itu pasti bekerja dengan baik saat ini
bash
.sumber