SORU
23 Mart 2010, Salı


nasıl kedi << bash EOF` iş?

Bir program (psql) çok satırlı giriş girmek için bir senaryo yazmak istedim

Google'da biraz araştırdıktan sonra aşağıdaki sözdizimini çalışır buldum:

cat << EOF | psql ---params
BEGIN;

`pg_dump ----something`

update table .... statement ...;

END;
EOF

Bu doğru psql bir giriş olarak çok satırlı dize (END; dahil BEGIN;) ve borular oluşturur.

ama nasıl çalıştığı hakkında hiç bir fikrim yok, bazı biri lütfen açıklayabilir mi?

Esas cat << EOF, > bir dosyaya çıkışları biliyorum, >> bir dosya girişi okur ekler bahsediyorum.

"<<" tam olarak ne iş yapar?

Ve bir adam bir sayfa mı?

CEVAP
23 Mart 2010, Salı


Bu sürecin içine bir dize koymak için heredoc biçimidir. Ayrıntı http://en.wikipedia.org/wiki/Here_document#Unix-Shells bkz.


man bash:

Burada Belgeler

Bu tür bir yeniden yönlendirme giriş okumak için kabuk bildirir bir çizgi kadar geçerli kaynak tek kelime (sondaki ile içeren boş olanlar) görülür.

Çizgiler, bu noktaya kadar okunan bütün olarak kullanılır bir komut için standart girdi.

Burada belge biçimi:

          <<[-]word
                  here-document
          delimiter

Hiçbir parametre genişleme, komut ikamesi, aritmetik genişleme ya da yol genişletme gerçekleştirilir kelime. Herhangi bir karakterkelimevardır alıntı, sınırlayıcıalıntı kaldırılması sonucukelimeve çizgiler -belge buradadeğil genişletti. Eğerkelime, tüm hatları tırnaksız. -belge buradaparametre genişleme, komut tabi ikame ve aritmetik genişleme. İkinci durumda, karakter dizisi \<newline> göz ardı, ve \ 16 karakter*,* 17 ** ve alıntı için kullanılmalıdır.

Eğer yönlendirme operatörü <<- tüm önde gelen sekme karakterleri ise giriş hatları ve kaldırılır satır içerensınırlayıcı. Bu kabuk betikleri içinde burada belgeler doğal bir şekilde girintili olmasını sağlar.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FrameCityJackal

    FrameCityJac

    4 Aralık 2010
  • Missouri Star Quilt Company

    Missouri Sta

    18 ŞUBAT 2009
  • Noam Erez

    Noam Erez

    3 NİSAN 2012