เมื่อต้องการเขียน Shell Script เพื่อรับ Argument และ Option เช่น เขียน myscript.sh ซึ่งแบ่งเป็น 3 แบบ 1) $ sh myscript1.sh myfirstname mylastname 16 2) $ sh myscript2.sh -f myfirstname -l mylastname -a 16 3) $ sh myscript3.sh –firstname myfirstname –lastname mylastname –age 16 [บทความนี้ ใช้งานบน Ubuntu 12.04 Server และ ใช้ Bash Shell] 1) วิธีแรก คือ การรับตัว Argument เรียงตามลำดับ โดยใช้ เครื่องหมาย $ ตามด้วยลำดับของตัวแปร เช่น $1, $2, $3 ดัง Script myscript1.sh มีรายละเอียด ต่อไปนี้ firstname=$1 lastname=$2 age=$3 echo “Firstname=$firstname” echo “lastname=$lastname” echo “age=$age” วิธีนี้ ข้อดีคือ สร้างง่าย แต่ ข้อเสียคือ ต้องใส่ Argument ตามลำดับเท่านั้น 2) วิธีที่สอง คือ มีการใช้ Option แบบชื่อสั้น เช่น -f, -l ,-a โดยต้องใช้คำสั่ง getopts ดังตัวอย่าง Script myscript2.sh getopts “f:l:a:” opt while [ “$opt” != “?” ] do case $opt in f) echo “Firstname: $OPTARG” ;; l) echo “Lastname: $OPTARG” ;; a) echo “Age: $OPTARG” ;; esac getopts “f:l:a:” opt done อธิบายเพิ่มเติม getopts “f:l:a:” opt คำสั่งนี้ บอกว่า getopts จะรับ Option คือ f, l และ a และ เมื่อรับมาแล้ว จะใส่ในตัวแปร opt ส่วนใน “f:l:a:” นั้น เป็นการกำหนด Short Option Name โดยที่ เป็นอักษรตัวเดียว และ ค่า Option ใด ไม่มี เครื่องหมาย “:” แสดงว่า ไม่ต้องการใส่ค่า Option ใด มี เครื่องหมาย “:” แสดงว่า ต้องการมีการใส่ค่า Option ใด ไม่มี เครื่องหมาย “::” แสดงว่า จะใส่ค่า หรือไม่ใส่ค่า ก็ได้ while [ “$opt” != “?” ] … done วนลูป ทุก Options จนเจอค่า “?”