ฉันมีไฟล์หนึ่งบรรทัดที่มีค่าเก็บไว้เป็นสตริงใน:
server-name-2009-August-9-AMIserver_nameชื่อไฟล์เป็น วิธีที่สั้นและสวยงามที่สุดในการแปลงค่านี้ให้เป็นตัวแปรด้วยสคริปต์ทุบตีคืออะไร
ฉันมีไฟล์หนึ่งบรรทัดที่มีค่าเก็บไว้เป็นสตริงใน:
server-name-2009-August-9-AMIserver_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)