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

  • Artorius FullPower

    Artorius Ful

    29 Temmuz 2007
  • El SalvaLobo

    El SalvaLobo

    10 Temmuz 2006
  • Semantic Mastery

    Semantic Mas

    30 EKİM 2013