คำถามติดแท็ก heredoc

เอกสารที่นี่เป็นไวยากรณ์พิเศษของการเขียนสตริงตามตัวอักษรในซอร์สโค้ดซึ่งใช้โดยภาษาโปรแกรมต่างๆ



8
“ cat << EOF” ทำงานอย่างไรในการทุบตี?
ฉันต้องการเขียนสคริปต์เพื่อป้อนอินพุตหลายบรรทัดไปยังโปรแกรม ( psql) หลังจาก googling ไปเล็กน้อยฉันพบว่าไวยากรณ์ต่อไปนี้ใช้งานได้: cat &lt;&lt; EOF | psql ---params BEGIN; `pg_dump ----something` update table .... statement ...; END; EOF นี้ได้อย่างถูกต้องสร้างสตริงหลายคู่สาย (จากBEGIN;การEND;รวม) และท่อมันเป็น input psqlไปยัง แต่ฉันไม่รู้ว่ามันทำงานได้ยังไงบางคนช่วยอธิบายหน่อยได้ไหม? ฉันหมายถึงส่วนใหญ่cat &lt;&lt; EOFฉันรู้ว่าการ&gt;ส่งออกไปยังไฟล์&gt;&gt;ผนวกกับไฟล์&lt;อ่านอินพุตจากไฟล์ ทำอะไร&lt;&lt;กันแน่ และมีหน้าคนสำหรับมันหรือไม่?
629 linux  bash  scripting  heredoc 

11
วิธีการกำหนดค่า heredoc ให้กับตัวแปรใน Bash
ฉันมีสตริงหลายบรรทัดนี้ (รวมคำพูด): abc'asdf" $(dont-execute-this) foo"bar"'' ฉันจะกำหนดให้ตัวแปรโดยใช้ heredoc ใน Bash ได้อย่างไร ฉันต้องการรักษาบรรทัดใหม่ ฉันไม่ต้องการที่จะหลบหนีตัวละครในสตริงที่จะน่ารำคาญ ...
374 bash  heredoc 

17
การดำเนินการคำสั่งหลายบรรทัดในบรรทัดคำสั่งบรรทัดเดียว?
ฉันใช้ Python กับ-cเพื่อดำเนินการลูปซับหนึ่งเช่น: $ python -c "for r in range(10): print 'rob'" ใช้งานได้ดี อย่างไรก็ตามถ้าฉันนำเข้าโมดูลก่อน for for loop ฉันจะได้รับข้อผิดพลาดทางไวยากรณ์: $ python -c "import sys; for r in range(10): print 'rob'" File "&lt;string&gt;", line 1 import sys; for r in range(10): print 'rob' ^ SyntaxError: invalid syntax ความคิดใด ๆ ที่สามารถแก้ไขได้? เป็นสิ่งสำคัญสำหรับฉันที่จะใช้สิ่งนี้เป็นซับในเดียวเพื่อให้ฉันสามารถรวมไว้ใน Makefile

5
ข้อดีของการใช้ heredoc ใน PHP คืออะไร? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม &amp; คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ข้อดีของการใช้heredocใน PHP คืออะไรและคุณสามารถแสดงตัวอย่างได้หรือไม่?
196 php  heredoc 

3
การใช้ตัวแปรภายใน bash heredoc
ฉันพยายามแก้ไขตัวแปรภายใน bash heredoc: var=$1 sudo tee "/path/to/outfile" &gt; /dev/null &lt;&lt; "EOF" Some text that contains my $var EOF สิ่งนี้ไม่ทำงานอย่างที่ฉันคาดไว้ ( $varได้รับการปฏิบัติอย่างแท้จริงไม่ขยาย) ฉันต้องใช้sudo teeเพราะการสร้างไฟล์ต้องใช้ sudo ทำสิ่งที่ชอบ: sudo cat &gt; /path/to/outfile &lt;&lt;EOT my text... EOT ไม่ทำงานเพราะ&gt;outfileเปิดไฟล์ในเชลล์ปัจจุบันซึ่งไม่ได้ใช้งาน sudo
192 bash  variables  sh  heredoc 

4
ไวยากรณ์หลายบรรทัดสำหรับการวางท่อ heredoc; พกพาได้ไหม
ฉันคุ้นเคยกับไวยากรณ์นี้: cmd1 &lt;&lt; EOF | cmd2 text EOF แต่เพิ่งค้นพบว่า bash ช่วยให้ฉันเขียน: cmd1 &lt;&lt; EOF | text EOF cmd2 (heredoc ใช้เป็นอินพุตไปยัง cmd1 และเอาต์พุตของ cmd1 จะถูกส่งไปยัง cmd2) นี่ดูเหมือนไวยากรณ์ที่แปลกมาก พกพาได้ไหม
132 bash  shell  pipe  sh  heredoc 

14
Javascript heredoc
ฉันต้องการบางอย่างเช่น heredoc ใน JavaScript คุณมีความคิดเกี่ยวกับเรื่องนี้หรือไม่? ฉันต้องการฟังก์ชันข้ามเบราว์เซอร์ ฉันพบสิ่งนี้: heredoc = '\ &lt;div&gt;\ &lt;ul&gt;\ &lt;li&gt;&lt;a href="#zzz"&gt;zzz&lt;/a&gt;&lt;/li&gt;\ &lt;/ul&gt;\ &lt;/div&gt;'; ฉันคิดว่ามันจะได้ผลสำหรับฉัน :)

4
วิธี cat << EOF >> ไฟล์ที่มีรหัส?
ฉันต้องการพิมพ์รหัสลงในไฟล์โดยใช้cat &lt;&lt;EOF &gt;&gt;: cat &lt;&lt;EOF &gt;&gt; brightup.sh !/bin/bash curr=`cat /sys/class/backlight/intel_backlight/actual_brightness` if [ $curr -lt 4477 ]; then curr=$((curr+406)); echo $curr &gt; /sys/class/backlight/intel_backlight/brightness; fi EOF แต่เมื่อฉันตรวจสอบผลลัพธ์ของไฟล์ฉันจะได้รับสิ่งนี้: !/bin/bash curr=1634 if [ -lt 4477 ]; then curr=406; echo &gt; /sys/class/backlight/intel_backlight/brightness; fi ฉันพยายามใส่เครื่องหมายคำพูดเดี่ยว แต่ผลลัพธ์ก็มีเครื่องหมายคำพูดเดี่ยวด้วย ฉันจะหลีกเลี่ยงปัญหานี้ได้อย่างไร
108 linux  unix  sh  heredoc 

11
ฉันจะลบตัวอักษรช่องว่างชั้นนำจาก Ruby HEREDOC ได้อย่างไร
ฉันมีปัญหากับ Ruby heredoc ที่ฉันกำลังพยายามสร้าง มันส่งคืนช่องว่างนำหน้าจากแต่ละบรรทัดแม้ว่าฉันจะรวมตัวดำเนินการ - ซึ่งควรจะยับยั้งอักขระช่องว่างนำหน้าทั้งหมด วิธีการของฉันมีลักษณะดังนี้: def distinct_count &lt;&lt;-EOF \tSELECT \t CAST('#{name}' AS VARCHAR(30)) as COLUMN_NAME \t,COUNT(DISTINCT #{name}) AS DISTINCT_COUNT \tFROM #{table.call} EOF end และผลลัพธ์ของฉันมีลักษณะดังนี้: =&gt; " \tSELECT\n \t CAST('SRC_ACCT_NUM' AS VARCHAR(30)) as COLUMN_NAME\n \t,COUNT(DISTINCT SRC_ACCT_NUM) AS DISTINCT_COUNT\n \tFROM UD461.MGMT_REPORT_HNB\n" แน่นอนว่าสิ่งนี้ถูกต้องในกรณีนี้ยกเว้นช่องว่างทั้งหมดระหว่างช่องแรก "และ \ t มีใครรู้บ้างว่าฉันทำอะไรผิดที่นี่?

17
เรียกใช้ฟังก์ชัน PHP ภายในสตริง HEREDOC
ใน PHP การประกาศสตริง HEREDOC มีประโยชน์มากสำหรับการส่งออกบล็อกของ html คุณสามารถแยกวิเคราะห์ในตัวแปรได้เพียงแค่นำหน้าด้วย $ แต่สำหรับไวยากรณ์ที่ซับซ้อนมากขึ้น (เช่น $ var [2] [3]) คุณต้องใส่นิพจน์ของคุณไว้ในเครื่องหมายวงเล็บ {} ใน PHP 5 เป็นไปได้ที่จะเรียกใช้ฟังก์ชันภายใน {} วงเล็บปีกกาภายในสตริง HEREDOC แต่คุณต้องดำเนินการเล็กน้อย ชื่อฟังก์ชันจะต้องถูกเก็บไว้ในตัวแปรและคุณต้องเรียกมันให้เหมือนกับว่ามันเป็นฟังก์ชันที่ตั้งชื่อแบบไดนามิก ตัวอย่างเช่น: $fn = 'testfunction'; function testfunction() { return 'ok'; } $string = &lt;&lt;&lt; heredoc plain text and now a function: {$fn()} heredoc; อย่างที่คุณเห็นสิ่งนี้ค่อนข้างยุ่งเหยิงมากกว่า: $string = …
92 php  string  heredoc 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.