บทนำ
ในสคริปต์ทุบตี การกำหนดเอาต์พุตของคำสั่งให้กับตัวแปรสามารถทำได้สะดวกโดยการจัดเก็บเอาต์พุตของคำสั่งและนำไปใช้ในภายหลัง
ในคำแนะนำสั้นๆ นี้ เราจะมาดูกันว่าคุณสามารถจัดเก็บเอาต์พุตของคำสั่งเป็นตัวแปรใน Bash ได้อย่างไร
พื้นฐานในการตั้งค่าตัวแปร
การบันทึกเอาต์พุตของคำสั่งเป็นตัวแปรสามารถทำได้ผ่าน คำสั่งทดแทน. การแทนที่คำสั่งเป็นตัวตัดคำที่ดำเนินการคำสั่งใน สภาพแวดล้อมย่อยและแทนที่คำสั่งที่ห่อด้วยเอาต์พุตมาตรฐานของสภาพแวดล้อมที่รันคำสั่ง ผลลัพธ์นี้สามารถอ้างอิงได้ในภายหลังหากเชื่อมต่อกับตัวแปรอ้างอิง!
การแทนที่คำสั่งสามารถทำได้ผ่าน backticks หรือเครื่องหมายดอลลาร์พร้อมวงเล็บ:
`command`
$(command)
มีการถกเถียงกันว่า `คำสั่ง` (แบ็คทิกส์) หรือ $(คำสั่ง) (เครื่องหมายดอลลาร์และวงเล็บ) ควรใช้เป็น "แนวปฏิบัติที่ดีที่สุด" $(command)
ทำงานได้ดีในการซ้อนและปรับปรุงความสามารถในการอ่านในบางกรณี แต่คุณสามารถใช้ไวยากรณ์ใดก็ได้ในตัวอย่างที่กำลังดำเนินการ
ดังที่กล่าวไว้ - การกำหนดเอาต์พุตของคำสั่งให้กับตัวแปรใน Bash นั้นง่ายเหมือน:
VARIABLE=$(command)
echo "${VARIABLE}"
เล่น ${variable}
เป็นที่รู้จักกันในนาม การขยายพารามิเตอร์และใช้เพื่อประเมินและดึงค่าที่เกี่ยวข้องกับตัวแปรอ้างอิง
มาดูตัวอย่างง่ายๆ ของการตั้งค่าตัวแปรสำหรับคำสั่งเพื่อเปลี่ยนสีผลลัพธ์:
#!/bin/bash
GREEN=$(tput setaf 2)
echo "${GREEN}Please"
ORANGE=$(tput setaf 9)
echo "${ORANGE}Visit"
echo "${GREEN}Paris"
ในตัวอย่างข้อมูล เราได้ใช้ tput
คำสั่งและกำหนดค่าที่ส่งกลับของคำสั่งเหล่านั้นเพื่อพิมพ์ข้อความที่มีสีสัน เดอะ setaf
เปลี่ยนสีพื้นหน้า และ 3 (สีเขียว) และ 9 (สีส้ม) เป็นรหัสสี
ตอนนี้เราจะไปยังตัวอย่างอื่นที่มีหลายเงื่อนไขเพื่อตั้งค่าตัวแปรสำหรับคำสั่งต่างๆ:
#!/bin/bash
PERSON=$(whoami)
echo -e "Hey ${PERSON}! I am Charlien"
DETAILS=$(uname -a)
echo -e "You're running this script on:n${DETAILS}n"
DATES=$(date)
echo -e "The script is being run on:n${DATES}n"
CREATE=$(touch $(date +"%d%m%Y").txt)
echo -e "A text file logging this run is created.${CREATE}n"
LOCATION=$(ls
-l *txt)
echo -e "Saved text file at: ${LOCATION}"
ในสคริปต์ข้างต้น the whoami
คำสั่งส่งคืนชื่อผู้ใช้ของผู้ใช้ปัจจุบัน เดอะ uname -a
ส่งคืนข้อมูลระบบและ date
ส่งกลับเวลาและวันที่ปัจจุบัน
หมายเหตุ เราสามารถเชื่อมโยงการกำหนดตัวแปรโดยการเพิ่มหลายคำสั่งในการเรียกที่ซ้อนกันเพียงครั้งเดียว เดอะ CREATE
ตัวแปรมีเอาต์พุตของ touch
คำสั่ง ซึ่งจะสร้างไฟล์และตั้งชื่อไฟล์เป็นเอาต์พุตของ date +"%d%m%Y
คำสั่ง
ดูคู่มือเชิงปฏิบัติสำหรับการเรียนรู้ Git ที่มีแนวทางปฏิบัติที่ดีที่สุด มาตรฐานที่ยอมรับในอุตสาหกรรม และเอกสารสรุปรวม หยุดคำสั่ง Googling Git และจริงๆ แล้ว เรียน มัน!
สุดท้าย เราเพิ่ม ก multiline
แนวคิดการกำหนดตัวแปรคำสั่งโดยการเพิ่มแบ็กสแลช ()
ระหว่าง ls
คำสั่ง -l
ตั้งค่าสถานะเพื่อแสดงเฉพาะไฟล์ข้อความโดยใช้ *.txt
. เครื่องหมายแบ็กสแลชเป็นอักขระหลีกที่แจ้งให้เชลล์ไม่ต้องตีความอักขระถัดไป
ตัว Vortex Indicator ได้ถูกนำเสนอลงในนิตยสาร echo
คำสั่ง เราได้เพิ่มไฟล์ -e
แฟล็กเพื่อใช้อักขระพิเศษ ได้แก่ n
(ขึ้นบรรทัดใหม่) เพื่อพิมพ์ผลลัพธ์ในบรรทัดใหม่
เราได้ผลลัพธ์ต่อไปนี้หลังจากรันสคริปต์:
$ ./variable.sh
สรุป
ในคำแนะนำสั้นๆ นี้ เราได้ดูวิธีตั้งค่าเอาต์พุตของคำสั่งเป็นตัวแปรใน Bash เราได้พิจารณาความแตกต่างระหว่างไวยากรณ์สำหรับ คำสั่งทดแทนสังเกตการปรับปรุงการอ่านง่ายของ $(command)
มากกว่าการทดแทนโดยใช้ backtick จากนั้น เราได้ดูตัวอย่างต่างๆ ของทั้งการกำหนดอย่างง่ายและการกำหนดเอาต์พุตแบบลูกโซ่/แบบซ้อน