ฉันมีไฟล์หนึ่งบรรทัดที่มีค่าเก็บไว้เป็นสตริงใน:
server-name-2009-August-9-AMI
server_name
ชื่อไฟล์เป็น วิธีที่สั้นและสวยงามที่สุดในการแปลงค่านี้ให้เป็นตัวแปรด้วยสคริปต์ทุบตีคืออะไร
ฉันมีไฟล์หนึ่งบรรทัดที่มีค่าเก็บไว้เป็นสตริงใน:
server-name-2009-August-9-AMI
server_name
ชื่อไฟล์เป็น วิธีที่สั้นและสวยงามที่สุดในการแปลงค่านี้ให้เป็นตัวแปรด้วยสคริปต์ทุบตีคืออะไร
คำตอบ:
คุณสามารถทำ "การใช้ประโยชน์จากแมว";)
VAR = $(cat $(dirname $0)/server_name)
สิ่งนี้จะนำเนื้อหาของไฟล์ "server_name" ซึ่งอยู่ในไดเรกทอรีเดียวกับสคริปต์ของคุณไปยัง $ VAR ทำงานโดยไม่คำนึงถึงตำแหน่งที่คุณเรียกใช้สคริปต์
คุณสามารถใช้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
ฉันขอแนะนำให้คุณใช้เส้นทางแบบเต็มของไฟล์ที่คุณต้องการอ่านแทนที่จะสมมติว่าทั้งสองสคริปต์จะอยู่ในไดเรกทอรีเดียวกัน
ฉันจะไม่สาบานเลยว่านี่เป็นทางออกที่หรูหราที่สุด
$(< file)
$(cat file)