SORU
12 AĞUSTOS 2011, Cuma


Boru için bir heredoc sözdizimi; bu taşınabilir mi?

Bu sözdizimi aşina olduğum:

cat << EOF | cmd
text
EOF

ama sadece bash yazmamı sağlayan keşfetti:

cat << EOF |
text
EOF
cmd

(heredoc giriş olarak cmd için kullanılır). Bu çok garip bir sözdizimi gibi görünüyor. Taşınabilir mi?

CEVAP
12 AĞUSTOS 2011, Cuma


Evet, POSIX standardı bu sağlar. According to the 2008 version:

Bu belgeden sonra başlayan tek bir kelime gibi işlem görür önümüzdeki 5 ** ve tek bir satır içeren kalmayıncaya kadar devam eder ve bir <newline>, <blank> herhangi bir karakter ile arasında ayırıcı. Sonra burada-eğer bir belge varsa, orada başlar.

Ve birden çok örneği içerir "işte belgeler" aynı satır:

cat <<eof1; cat <<eof2
Hi,
eof1
Helene.
eof2

Sorun yönlendirmeler veya boru yapmak yok. Sizin örnekte, bu gibi bir şeye benzer:

cat file |
cmd

Ve kabuk dilbilgisi (bağlantılı sayfada daha aşağı) bu tanımları içerir:

pipe_sequence    :                             command
                 | pipe_sequence '|' linebreak command

newline_list     :              NEWLINE
                 | newline_list NEWLINE
                 ;
linebreak        : newline_list
                 | /* empty */

Yani bir kanal simgesi bir sonu hattı ve boru hattı hala bir parçası olarak kabul edilmesi ile takip edilebilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bratayley

    Bratayley

    30 Aralık 2010
  • How To Cook That

    How To Cook

    16 NİSAN 2011
  • Wild Academy

    Wild Academy

    8 Aralık 2009