วิธีการหลีกเลี่ยงพื้นที่หลังจากตัวแปร bash ในสตริง?


17

ฉันมีตัวแปรสำหรับสี ฉันใช้มันเพื่อตั้งค่าสีเป็นสตริงโดยการประเมินมันภายในสตริง อย่างไรก็ตามฉันต้องรวมช่องว่างหลังชื่อ (เพื่อให้ชื่อไม่มีส่วนของข้อความ) บางครั้งมันก็ดูไม่ดี

ฉันจะหลีกเลี่ยงการใช้ (การพิมพ์) พื้นที่นี้ได้อย่างไร

ตัวอย่าง (สมมติว่าอย่างนั้นRed=1และNC=2):

echo -e "$Red Note: blabla$NC".

เอาท์พุท:

1 Note: blabla2.

ผลลัพธ์ที่คาดหวัง:

1Note: blabla2.

คำตอบ:


28

เพียงใส่ตัวแปรในวงเล็บ:

echo -e "${Red}Note: blabla${NC}".

ดูรายละเอียดเพิ่มเติมเกี่ยวกับการขยายตัวพารามิเตอร์

ดูคำตอบที่ยอดเยี่ยมทำไม printf ถึงดีกว่าเสียงสะท้อน? ถ้าคุณสนใจเรื่องการพกพา


4

สิ่งที่คุณควรใช้ในการใช้งานคือ printf:

printf '%sNote: blabla%s\n' "$Red" "$NC"

โดยที่แต่ละอันจะ%sแทนที่ตัวแปร และ-eไม่จำเป็นต้องใช้เนื่องจาก printf ยอมรับค่าแบ็กสแลช \ n, \ t ฯลฯ ในลักษณะพกพา

จำไว้ว่าecho -eไม่สามารถพกพาไปที่กระสุนอื่นได้

ตัวเลือกอื่น:

คุณสามารถใช้สองคำสั่งที่เชื่อมต่อผลลัพธ์ของพวกเขา:

echo -ne "$Red"; echo -e "Note: blabla$NC"

คุณสามารถใช้การเรียงสตริงอย่างง่าย:

echo -e "$Red""Note: blabla$NC"

หรือคุณสามารถใช้{ }เพื่อหลีกเลี่ยงความสับสนของข้อความชื่อ:

echo -e "${Red}Note: blabla$NC"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.