วิธีกำหนดเอาต์พุต cat ของสคริปต์ bash ให้กับตัวแปรในสคริปต์อื่น


29

ฉันมีสคริปต์ทุบตีที่สร้างเอาต์พุต cat เมื่อมีการโต้แย้ง ฉันยังมีสคริปต์ทุบตีอีกตัวหนึ่งที่เรียกใช้งานสคริปต์ทุบตีแรกด้วยอาร์กิวเมนต์ที่ฉันต้องการสร้างผลงาน cat ด้วย ฉันจะเก็บ cat เอาต์พุตที่สร้างโดยสคริปต์ทุบตีแรกในตัวแปรได้อย่างไร

คำตอบ:


38
var=$( cat foo.txt )

จะเก็บเอาท์พุทของตัวแปรในcatvar

var=$( ./myscript )

จะเก็บผลลัพธ์ของmyscriptในตัวแปรเดียวกัน


5
เคล็ดลับฉบับย่อสำหรับมือใหม่ทุบตีอย่างฉันการเว้นวรรคและการเว้นวรรคไม่ใช่ทั้งหมดมีความสำคัญตามรูปแบบที่แน่นอน! เช่นvar = $( cat foo.txt )จะไม่ทำงาน
sojim2

@Dalker มีข้อ จำกัด ว่า foo.txt สามารถมีขนาดเท่าใด ฉันมีข้อมูลมากกว่า 10 mb แมวจะเก็บของทั้งหมดหรือไม่ ฉันต้องการทราบว่ามีข้อ จำกัด สำหรับการอ้างอิงในอนาคตหรือไม่
myhouse

@sojim คุณรู้คำตอบของสิ่งนี้หรือไม่?
myhouse

1
@myhouse ตามคำตอบนี้ไม่มีการ จำกัด เนื่องจากการทุบตีตัวเอง แต่ขีด จำกัด ค่อนข้างเป็นหน่วยความจำที่จัดสรรในสภาพแวดล้อมพื้นฐานซึ่งแน่นอนอาจแตกต่างกันไป
Dalker

3

ใช้เครื่องหมายคำพูดคู่ ลองสิ่งนี้

var="$(cat foo.txt)"

3
มันแทบจะไม่เป็นความคิดที่ดีเลยที่จะนำสิ่งต่าง ๆ (โดยเฉพาะสิ่งที่ขึ้นต้นด้วย$) มาใส่เครื่องหมายคำพูดคู่และมันไม่เจ็บที่นี่ อย่างไรก็ตามในกรณีของการกำหนดตัวแปรมันไม่ได้ช่วยอะไร
G-Man กล่าวว่า 'Reinstate Monica'

@ G-Man: ถ้าตัวแปรนั้นมีบรรทัดใหม่หรือแท็บที่เราต้องการให้อยู่ในตัวแปร
jvriesem

@jvriesem: จะทำอย่างไรถ้ามันเป็นเช่นนั้น? คุณมีคำถาม?
G-Man กล่าวว่า 'Reinstate Monica'

เมื่อฉันเรียกใช้คำสั่งนี้ดูเหมือนว่าจะกำจัดบรรทัดใหม่ทั้งหมดของฉัน
K. Carpenter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.