Parameter คือ Entity ที่เก็บค่า สามารถเป็น Name, Number หรือ Special Characters Variable คือ Parameter ที่แทนด้วย Name บางตัวแปรถูกตั้งค่าไว้ให้แล้ว และส่วนใหญ่ไม่สามารถ Assign ค่าได้
ตัวแปรเหล่านี้มีข้อมูลที่มีประโยชน์ สามารถใช้โดย Shell Script เพื่อรู้ Environment ที่มันกำลังรันอยู่
Bash มี Parameter 2 ประเภท:
- Positional Parameter
- Special Parameter
ในบทความนี้ มาพูดถึง Bash Positional Parameter พร้อมตัวอย่าง
บทความนี้เป็นส่วนหนึ่งของชุดบทช่วยสอน Bash ต่อเนื่อง
ตัวอย่าง 1: Bash Positional Parameter – $0, $1, $2 ..
Positional Parameters คือ Arguments ที่ส่งให้ Script เมื่อ Invoke มัน อาจเป็น $1 ถึง $N เมื่อ N มีหลายหลัก ต้องเคลมใน Braces เช่น ${N}
Variable $0 คือ Basename ของ Program ตามที่ถูกเรียก
ตัวอย่างต่อไปนี้รับ 2 Arguments และให้ผลลัพธ์ Arithmetic Operations ระหว่าง 2 Integers นั้น
สร้าง arithmetic.sh Shell Script ก่อน:
$ cat arithmetic.sh #!/bin/bash echo -e "\$1=$1" echo -e "\$2=$2" let add=$1+$2 let sub=$1-$2 let mul=$1*$2 let div=$1/$2 echo -e "Addition=$add\nSubtraction=$sub\nMultiplication=$mul\nDivision=$div\n"
รัน arithmetic.sh พร้อม Parameters:
$ ./arithmetic.sh 12 10 $1=12 $2=10 Addition=22 Subtraction=2 Multiplication=120 Division=1
ใน Output ข้างต้น $1 มีค่า 12 และ $2 มีค่า 10
Shell Builtin let อนุญาตให้ทำ Arithmetic Operation บน Shell Variables สคริปต์ข้างต้นทำ Addition, Subtraction, Multiplication และ Division บน Parameters ที่ให้มา
ตัวอย่าง 2: Set / Unset Bash Positional Parameters
Built-in set Command ใช้ Set และ Unset Positional Parameter
สร้าง positional.sh Shell Script:
$ cat positional.sh #!/bin/bash # จาก Command Line echo -e "Basename=$0" echo -e "\$1=$1" echo -e "\$2=$2" echo -e "\$3=$3" # จาก Set Builtin set First Second Third echo -e "\$1=$1" echo -e "\$2=$2" echo -e "\$3=$3" # Store Positional Parameters ด้วย - (Hyphen) set - -f -s -t echo -e "\$1=$1" echo -e "\$2=$2" echo -e "\$3=$3" # Unset Positional Parameter set -- echo -e "\$1=$1" echo -e "\$2=$2" echo -e "\$3=$3"
สคริปต์ข้างต้นพิมพ์ Command Line Arguments ก่อน แล้ว Set Command ตั้งค่า Positional Parameter ให้ชัดเจน Set ด้วย -- หมายถึง End of Options Arguments ต่อไปทั้งหมดเป็น Positional Parameter แม้จะเริ่มด้วย - Set ด้วย -- โดยไม่มี Arguments อื่น Unset Positional Parameters ทั้งหมด
รัน positional.sh:
$ ./positional.sh Basename=t.sh $1=12 $2=10 $3= $1=First $2=Second $3=Third $1=-f $2=-s $3=-t $1= $2= $3=
ในบทความถัดไป จะพูดถึง Bash Special Parameters พร้อมตัวอย่าง