Bash - อ่านบรรทัดจากไฟล์


1

ฉันมีไฟล์หนึ่งบรรทัดที่มีค่าเก็บไว้เป็นสตริงใน:

server-name-2009-August-9-AMI

server_nameชื่อไฟล์เป็น วิธีที่สั้นและสวยงามที่สุดในการแปลงค่านี้ให้เป็นตัวแปรด้วยสคริปต์ทุบตีคืออะไร

คำตอบ:


8

คุณสามารถทำ "การใช้ประโยชน์จากแมว";)

VAR = $(cat $(dirname $0)/server_name)

สิ่งนี้จะนำเนื้อหาของไฟล์ "server_name" ซึ่งอยู่ในไดเรกทอรีเดียวกับสคริปต์ของคุณไปยัง $ VAR ทำงานโดยไม่คำนึงถึงตำแหน่งที่คุณเรียกใช้สคริปต์


1
หน้าคนทุบตีจริงแนะนำมากกว่า$(< file) $(cat file)
chepner

13

คุณสามารถใช้readคำสั่ง หากคุณไม่ได้ระบุตัวแปรใด ๆ บรรทัดนั้นจะได้รับการบันทึกโดยอัตโนมัติในตัวแปรREPLYใน Bash หากคุณระบุตัวแปร singe เส้นจะถูกบันทึกลงในตัวแปรนั้น หากคุณมีหลายตัวแปร Bash จะแบ่งบรรทัดเป็นคำ (การแบ่งจะทำในพื้นที่ว่าง) โดยพยายามวางคำหนึ่งคำลงในแต่ละตัวแปร (หากมีคำมากกว่าตัวแปรตัวแปรแต่ละตัวจะได้หนึ่งคำ แต่สุดท้ายจะได้รับส่วนที่เหลือของบรรทัด)

ตัวอย่าง:

telemachus ~ $ read < buff
telemachus ~ $ echo $REPLY
#!/usr/bin/env perl
telemachus ~ $ read LINE < buff
telemachus ~ $ echo $LINE
#!/usr/bin/env perl

โปรดทราบว่าตัวแปรที่ได้รับมอบหมายโดยไม่ต้องเครื่องหมายดอลลาร์ ( REPLYหรือLINE) แต่เมื่อคุณใช้มันคุณจะต้องหรือ$REPLY$LINE

ดังนั้นคุณต้องการสิ่งนี้:

read SERVER < /path/to/server_name

ฉันขอแนะนำให้คุณใช้เส้นทางแบบเต็มของไฟล์ที่คุณต้องการอ่านแทนที่จะสมมติว่าทั้งสองสคริปต์จะอยู่ในไดเรกทอรีเดียวกัน

ฉันจะไม่สาบานเลยว่านี่เป็นทางออกที่หรูหราที่สุด


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