Bagaimana cara mengomentari perintah multisaluran dalam skrip shell?

19

Saat menjalankan perintah yang panjang dan berat, itu praktik yang baik untuk menuliskannya dalam skrip shell. Apakah ada cara mudah untuk berkomentar di skrip seperti itu? Saya sudah mencoba metode berikut, tetapi tidak berhasil.

# the \ is also commented out, resulting in "command" and "--good-switch".
command \
  #--bad-switch \
  --good-switch \

# seems to send an extra argument to the command
command \
  \ #--bad-switch \
  --good-switch

sumber
1
Yang kedua menyebabkan spasi untuk dikirim sebagai argumen ( \ lolos dari karakter berikutnya, yang "menyembunyikan" baris baru tetapi membuat spasi menjadi signifikan).
geekosaur

Jawaban:

14

Ini mungkin opsi: menyimpan perintah dan args dalam array, kemudian jalankan setelah itu

# build the command
cmd=( ls
        -F
      # -a   # comment out this option temporarily
        -l
    )
# $cmd is now an array with 3 elements

# execute it
"${cmd[@]}"
glenn jackman
sumber
Ini bash-hanya ...
Socob
3

Saya selalu memindahkan komentar setelah perintah.

command \
  --good-switch
# --bad-switch          with explanation here, if needed
geekosaurus
sumber
0

Masalahnya adalah bahwa garis miring dihapus sebelum baris diuraikan, jadi perintah pertama diurai seperti jika Anda menulis command #--bad-switch --good-switch. Jika Anda memiliki urutan perintah yang sangat panjang, Anda dapat misalnya menulis blok komentar baris-demi-baris di atas atau di bawahnya, menjelaskan masing-masing secara bergantian, atau Anda dapat menyimpan parameter dalam variabel (walaupun itu sering kali membuat pusing mengutip dengan karakter spesial).

l0b0
sumber
1
Sepertinya bukan itu masalahnya. --good-switchditafsirkan sebagai perintah.
0

sebuah komentar mengerem rantai baris yang terhubung, jadi solusi paling sederhana adalah memindahkan baris yang dikomentari di akhir daftar.

command \
  --good-switch \
  # --bad-switch \

Jika Anda tidak ingin mengubah urutan, Anda dapat menggunakan :perintah (utilitas titik dua, yang tidak melakukan apa-apa) untuk menjaga jalur yang terhubung tetap utuh:

command \
  `: --bad-switch `\
  --good-switch \

Saya diuji dengan ini:

function command { 
  echo "num args:" $#;
}
rubo77
sumber