การอ่านอาร์กิวเมนต์จากคำสั่งลำดับ

Bash:
การอ่านอาร์กิวเมนต์จากคำสั่งลำดับ

วิธีการ:

#!/bin/bash

# พิมพ์ชื่อของสคริปต์
echo "ชื่อสคริปต์: $0"

# พิมพ์อาร์กิวเมนต์แรก
echo "อาร์กิวเมนต์แรก: $1"

# พิมพ์อาร์กิวเมนต์ทั้งหมด
echo "อาร์กิวเมนต์ทั้งหมด: $@"

ตัวอย่างผลลัพธ์สมมุติว่าคุณตั้งชื่อสคริปต์ของคุณว่า ’example.sh’ และคุณเรียกใช้ ./example.sh arg1 arg2:

ชื่อสคริปต์: ./example.sh
อาร์กิวเมนต์แรก: arg1
อาร์กิวเมนต์ทั้งหมด: arg1 arg2

วนลูปผ่านอาร์กิวเมนต์:

#!/bin/bash

# วนลูปผ่านอาร์กิวเมนต์แต่ละอัน
for arg in "$@"; do
  echo "อาร์กิวเมนต์: $arg"
done

ตรวจสอบลึกลงไป

Bash รองรับอาร์กิวเมนต์บรรทัดคำสั่งมานานแล้ว; พวกเขาเป็นพารามิเตอร์ตามตำแหน่ง, $0 ถึง $9, โดย $@ และ $* แสดงอาร์กิวเมนต์ทั้งหมด $0 เป็นสคริปต์นั้นเอง, $1 ถึง $9 คืออาร์กิวเมนต์ลำดับแรกถึงลำดับที่เก้า; ต้องใช้วงเล็บเช่น ${10} เมื่อต้องการเริ่มตั้งแต่ลำดับที่สิบเป็นต้นไป

การใช้ $@ มักจะดีกว่า $* เนื่องจากมันจัดการอาร์กิวเมนต์ที่มีช่องว่างได้อย่างถูกต้อง $@ ให้แต่ละอาร์กิวเมนต์เป็น “คำ” แยกกัน; $* รวมมันทั้งหมดเป็น “คำ” เดียว

คุณสามารถเลื่อนผ่านอาร์กิวเมนต์ได้โดยใช้คำสั่ง shift, ซึ่งจะเปลี่ยน $2 เป็น $1, และต่อไปเรื่อยๆ ทิ้ง $1 เก่า

มีทางเลือกอื่นหรือเปล่า? แน่นอน. getopts และ getopt ให้การควบคุมที่ดีกว่าสำหรับตัวเลือก (เช่น -h สำหรับความช่วยเหลือ) และการแยกสัญญาณการประมวลผล; ตรวจสอบสิ่งเหล่านี้หาก $1, $2,… ไม่ตอบโจทย์

ดูเพิ่มเติม