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

  • Absolute Zero(Programming Tutorials)

    Absolute Zer

    22 Kasım 2012
  • Canal de arkyoru

    Canal de ark

    18 Ocak 2007
  • humanHardDrive

    humanHardDri

    16 Mart 2011