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
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.
Varsayılan Yüce Metin 2 farklı dosya t...
Neden bu program geçerli mi? Bir sözdi...
Nasıl (dişliler) varlık boru hattı ile...
Taşınabilir bir şekilde Python için ge...
Nasıl özelleştirmek Yüce 2 sözdizimi d...