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

  • Hak5

    Hak5

    7 EYLÜL 2005
  • jbignacio

    jbignacio

    13 Mart 2006
  • Alexey - servant of Christ

    Alexey - ser

    15 EYLÜL 2007