<ก่อนหน้านี้ | Contents | ถัดไป>
การแปลงเคส
เวอร์ชันล่าสุดของ ทุบตี รองรับการแปลงสตริงบน/ตัวพิมพ์เล็ก ทุบตี
มีการขยายพารามิเตอร์สี่ตัวและสองตัวเลือกสำหรับ ประกาศ สั่งให้สนับสนุน
แล้วการแปลงตัวพิมพ์ดีสำหรับอะไร? นอกเหนือจากคุณค่าด้านสุนทรียภาพที่ชัดเจนแล้ว ยังมีบทบาทสำคัญในการเขียนโปรแกรม ลองพิจารณากรณีของการค้นหาฐานข้อมูล ลองนึกภาพว่าผู้ใช้ได้ป้อนสตริงลงในช่องป้อนข้อมูลที่เราต้องการค้นหาในฐานข้อมูล เป็นไปได้ที่ผู้ใช้จะป้อนค่าด้วยตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กทั้งหมด หรือทั้งสองอย่างรวมกัน แน่นอน เราไม่ต้องการเติมฐานข้อมูลของเราด้วยการเรียงสับเปลี่ยนที่เป็นไปได้ของการสะกดคำตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก จะทำอย่างไร?
แนวทางทั่วไปในการแก้ไขปัญหานี้คือ ทำให้ปกติ ข้อมูลเข้าของผู้ใช้ นั่นคือแปลงมัน
ให้อยู่ในรูปแบบมาตรฐานก่อนที่เราจะลองค้นหาฐานข้อมูล เราสามารถทำได้โดยแปลงอักขระทั้งหมดในอินพุตของผู้ใช้เป็นตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ และตรวจสอบให้แน่ใจว่ารายการฐานข้อมูลถูกทำให้เป็นมาตรฐานในลักษณะเดียวกัน
การขอ ประกาศ คำสั่งสามารถใช้เพื่อทำให้สตริงเป็นปกติทั้งตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก โดยใช้ ประกาศเราสามารถบังคับให้ตัวแปรมีรูปแบบที่ต้องการเสมอไม่ว่าจะถูกกำหนดให้เป็นแบบใด:
#! / bin / ทุบตี
# ul-declare: สาธิตการแปลงกรณีผ่านประกาศประกาศ -u upper
ประกาศ -l ต่ำกว่า
ถ้า [[ $1 ]]; แล้ว
upper="$1" lower="$1" echo $upper echo $lower
fi
#! / bin / ทุบตี
# ul-declare: สาธิตการแปลงกรณีผ่านประกาศประกาศ -u upper
ประกาศ -l ต่ำกว่า
ถ้า [[ $1 ]]; แล้ว
upper="$1" lower="$1" echo $upper echo $lower
fi
ในสคริปต์ข้างต้น เราใช้ ประกาศ เพื่อสร้างสองตัวแปร บน และ ลด. เรากำหนดค่าของอาร์กิวเมนต์บรรทัดคำสั่งแรก (พารามิเตอร์ตำแหน่ง 1) ให้กับตัวแปรแต่ละตัวแล้วแสดงบนหน้าจอ:
[me@linuxbox ~]$ ul-ประกาศ aBc
เอบีซี
abc
[me@linuxbox ~]$ ul-ประกาศ aBc
เอบีซี
abc
อย่างที่เราเห็น อาร์กิวเมนต์บรรทัดคำสั่ง ("aBc") ถูกทำให้เป็นมาตรฐาน
นอกจาก ประกาศมีการขยายพารามิเตอร์สี่ตัวที่ทำการแปลงตัวพิมพ์ใหญ่/ตัวพิมพ์เล็ก:
ตาราง 34-1: การขยายพารามิเตอร์การแปลงกรณีและปัญหา
รูปแบบผลลัพธ์
รูปแบบผลลัพธ์
${พารามิเตอร์- ขยายมูลค่าของ พารามิเตอร์ เป็นตัวพิมพ์เล็กทั้งหมด
${พารามิเตอร์,} ขยายมูลค่าของ พารามิเตอร์ เปลี่ยนเฉพาะครั้งแรก
ตัวอักษรเป็นตัวพิมพ์เล็ก
${พารามิเตอร์- ขยายมูลค่าของ พารามิเตอร์ เป็นตัวพิมพ์ใหญ่ทั้งหมด
${พารามิเตอร์^} ขยายมูลค่าของ พารามิเตอร์ เปลี่ยนเฉพาะครั้งแรก
ตัวอักษรเป็นตัวพิมพ์ใหญ่ (ตัวพิมพ์ใหญ่)
นี่คือสคริปต์ที่แสดงให้เห็นถึงการขยายเหล่านี้:
#! / bin / ทุบตี
# ul-param: สาธิตการแปลงตัวพิมพ์ผ่านการขยายพารามิเตอร์ if [[ $1 ]]; แล้ว
เสียงสะท้อน $1,,}
เสียงสะท้อน ${1,} เสียงสะท้อน ${1^} เสียงสะท้อน ${1^}
fi
#! / bin / ทุบตี
# ul-param: สาธิตการแปลงตัวพิมพ์ผ่านการขยายพารามิเตอร์ if [[ $1 ]]; แล้ว
เสียงสะท้อน $1,,}
เสียงสะท้อน ${1,} เสียงสะท้อน ${1^} เสียงสะท้อน ${1^}
fi
นี่คือสคริปต์ที่ใช้งานจริง:
[me@linuxbox ~]$ อัล-param aBc
เอบีซี เอบีซี เอบีซี
เอบีซี
[me@linuxbox ~]$ อัล-param aBc
เอบีซี เอบีซี เอบีซี
เอบีซี
อีกครั้ง เราประมวลผลอาร์กิวเมนต์บรรทัดคำสั่งแรกและส่งออกรูปแบบต่างๆ สี่รูปแบบที่สนับสนุนโดยการขยายพารามิเตอร์ ในขณะที่สคริปต์นี้ใช้พารามิเตอร์ตำแหน่งแรก พารามิเตอร์ อาจเป็นสตริง ตัวแปร หรือนิพจน์สตริงก็ได้