บทความนี้จะอธิบายว่า $@ ใน Bash และการเขียนสคริปต์ Bash/Shell คืออะไร รวมถึงวิธีและเหตุผลที่คุณอาจจะใช้มัน
ตัวแปรพิเศษ $@ ใน Bash เป็นตัวแปรที่เก็บค่าของ ทั้งหมด ของอาร์กิวเมนต์/พารามิเตอร์บรรทัดคำสั่งที่ส่งเข้าสู่สคริปต์
อาร์กิวเมนต์/พารามิเตอร์บรรทัดคำสั่งใน Bash
การใช้อาร์กิวเมนต์บรรทัดคำสั่งในสคริปต์ Shell เป็นคุณสมบัติที่สำคัญและมีประโยชน์ เรามีบทความเต็มรูปแบบเกี่ยวกับเรื่องนี้:
บทความนี้ต่อยอดมาจากบทความของเราเกี่ยวกับอาร์กิวเมนต์บรรทัดคำสั่งในสคริปต์ Shell/Bash
$@ ประกอบด้วยพารามิเตอร์/อาร์กิวเมนต์ทั้งหมดที่ส่งให้สคริปต์
วิธีที่ง่ายที่สุดในการแสดงให้เห็นว่า $@ ทำงานอย่างไร ก็คือตัวอย่างโค้ด
สคริปต์ตัวอย่างต่อไปนี้เพียงพิมพ์เนื้อหาของตัวแปร $@
#!/bin/bash echo $@
การเรียกสคริปต์นี้พร้อมอาร์กิวเมนต์ตัวอย่าง:
sh test.sh "apple" 0 banana 1
จะให้ผลลัพธ์ดังนี้:
apple 0 banana 1
แสดงให้เห็นว่าตัวแปร $@ เพียงแค่เก็บค่าของพารามิเตอร์ทั้งหมดที่ส่งให้สคริปต์
โปรดสังเกตว่าเครื่องหมายคำพูดถูกลบออก เนื่อง $@ เก็บ ค่า ของพารามิเตอร์ ไม่ใช่ข้อความที่พิมพ์เข้ามา
พารามิเตอร์ตำแหน่ง (positional parameters) ทั้งหมดจะถูกรวมอยู่ในดัชนี 1 เป็นต้นไป (ตำแหน่ง 0 เก็บชื่อของสคริปต์ที่กำลังรัน และจะถูกละเว้น)
$@ เป็นตัวแปรพิเศษที่มีกรณีใช้งานจำกัด – แนะนำให้คุณใช้พารามิเตอร์ตำแหน่ง (positional parameters) และใช้ตามเจตนาที่ออกแบบมา (ส่งค่าหนึ่งต่อพารามิเตอร์หนึ่ง) แทนที่จะพยายามใช้ $@ เพื่ออ่านข้อมูลจำนวนมากเข้าไปในสคริปต์และพยายามแยกวิเคราะห์เอง