Çok satırlı bash komutundaki yorumlar


32

Bu tek komut BASH komut dosyası anlamak zor, bu yüzden eylemlerin her biri için bir yorum yazmak istiyorum:

echo 'foo'     \
| sed 's/d/a/' \
| sed 's/e/b/' \
| sed 's/f/c/' \
> myfile

(sed sadece bir örnektir, aslında greps ve trs ile awks karışımıdır)

Satırları çoğaltmaktan veya her bir yorumun geçerli olduğu satırdan uzakta yorum yapmaktan nefret ederim.
Ancak aynı zamanda BASH, "çevrimiçi" yorumlara izin vermiyor.

Bu sorunu çözmenin zarif bir yolu var mı?

Yanıtlar:


51

Boruyu, satırın sonuna, ardından gelen yorumlarla koyun:

$ echo 'foo' |
sed 's/f/a/' | # change first f to a
sed 's/o/b/' | # change first o to b
sed 's/o/c/'   # change second o to c
abc

bir şey boruyu izlemesi bekleniyor çünkü mantıklı
MrCholo

15

Bir pipet dışı multiline komutunu yorumlarken bu soruya gelirseniz:

$ echo 'foo' |
sed -e 's/f/a/' `: # change first f to a` \
    -e 's/o/b/' `: # change first o to b` \
    -e 's/o/c/' `: # change second o to c`

Yorumlamayı otomatikleştirmek gibi gerçekten sapık bir şey yapmadığınız sürece, Mikel'in bir boruya vereceği cevabı tercih etmek için bir neden göremiyorum, ama gerçekten yapmak istiyorsanız:

$ echo 'foo' |
sed 's/f/a/' | `: # change first f to a` \
sed 's/o/b/' | `: # change first o to b` \
sed 's/o/c/'   `: # change second o to c`

veya:

$ echo 'foo' |
sed 's/f/a/' `: # change first f to a` |
sed 's/o/b/' `: # change first o to b` |
sed 's/o/c/' `: # change second o to c`

Kaynak: http://unix.derkeiler.com/Newsgroups/comp.unix.solaris/2005-07/0991.html


10

Ben bu yolu tercih ederim.

echo 'foo' | {
  # change first f to a
  # you can add more lines of comment on the command options
  sed 's/f/a/'
} | {
  # change first o to b
  sed 's/o/b/'
} | {
  # change second o to c
  sed 's/o/c/' 
}
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.