Kabuk komut dosyalarında çok satırlı komutlar nasıl yorumlanır?


19

Uzun, geçişli komutları çağırırken, bunları kabuk komut dosyalarına yazmak iyi bir uygulamadır. Bu tür komut dosyalarındaki satırları yorumlamanın kolay bir yolu var mı? Aşağıdaki yöntemleri denedim, ama ikisi de çalışmıyor.

# 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
shell 

1
İkincisi, bir boşluğun argüman olarak gönderilmesine neden olur ( \ yeni satırları "gizleyen" ancak boşlukları önemli kılan bir sonraki karakterden kaçar).
geekosaur

Yanıtlar:


14

Bu bir seçenek olabilir: komutu ve argümanları bir dizide saklayın ve ardından

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

# execute it
"${cmd[@]}"

Bu bash... -sadece
SOCOB

3

Yorumlananları her zaman komuttan hemen sonra taşıdım.

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

0

Sorun, çizgi ayrıştırılmadan önce eğik çizgilerin kaldırılmasıdır, bu nedenle ilk komut yazmış gibi ayrıştırılır command #--bad-switch --good-switch. Gerçekten uzun bir komut diziniz varsa, örneğin her birinin sırayla açıklandığı gibi satır satır yorum bloğu yazabilirsiniz veya parametreleri bir değişkende saklayabilirsiniz (bu genellikle özel karakterler).


1
Durum böyle değil. --good-switchkomut olarak yorumlanır.


0

Bir yorum, bağlı hatların zincirini frenler, bu nedenle en basit çözüm, yorum satırlarını listenin sonunda taşımaktır.

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

Sırayı değiştirmek istemiyorsanız :, bağlı satırları olduğu gibi tutmak için komutu (hiçbir şey yapmayan iki nokta yardımcı programı) kullanabilirsiniz:

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

Bunu test ettim:

function command { 
  echo "num args:" $#;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.