วิธีการอ่าน argument เพื่อมาเรียกใช้ในการเขียนสคริปต์ expect
ชื่อไฟล์สคริปต์ที่รัน
ถ้าต้องการอ่านชื่อไฟล์สคริปต์ที่รันอยู่ สามารถเรียกใช้ตัวแปร $argv0 ได้เลย
$ cat test.exp
#!/usr/bin/expect --
puts "Script Name = $argv0"
ตัวอย่างการรันสคริปต์
$ expect test.exp
Script Name = test.exp
จำนวน argument
หากต้องการนับจำนวน argument ที่รับเข้ามา สามารถทำได้สองวิธีคือ เรียกใช้ตัวแปร $argc หรือเรียกใช้คำสั่ง llength ตามด้วยตัวแปร $argv
ตัวอย่าง
$ cat test.exp #!/usr/bin/expect -- puts "Number of Arguments = $argc" puts "Number of Arguments = [llength $argv]"
ตัวอย่างการรันสคริปต์
$ expect test.exp a b c Number of Arguments = 3 Number of Arguments = 3
อ่านค่า argument
หากต้องการอ่านค่า argument แต่ละตัว ให้ใช้คำสั่ง lindex ตามด้วยตัวเลขลำดับที่ argument เริ่มจาก 0
เช่น ต้องการอ่านค่า argument ตัวแรก ให้ระบุเป็น $argv 0 (มีเว้นวรรคด้วย)
$ cat test.exp #!/usr/bin/expect -- puts "Argument #1 = [lindex $argv 0]" puts "Argument #2 = [lindex $argv 1]" puts "Argument #3 = [lindex $argv 2]"
ตัวอย่างการรัน
$ expect test.exp a bc d Argument #1 = a Argument #2 = bc Argument #3 = d
หากค่าใน argument ที่ต้องการใส่ มีเว้นวรรคด้วย ให้ใส่เครื่องหมาย ” ครอบ argument นั้นไว้
เช่น
$ expect test.exp a "b c" d Argument #1 = a Argument #2 = b c Argument #3 = d
ตัวอย่างการใช้ set เพื่อเก็บค่า argument ในตัวแปร
สังเกตว่าเวลา set ชื่อตัวแปรไม่ต้องใส่ $ แต่เวลาเรียกใช้ ต้องมี $ นำหน้าชื่อตัวแปร
$ cat test.exp #!/usr/bin/expect -- set arg1 [lindex $argv 0] puts "Argument #1 = $arg1"
ตัวอย่างการรัน
$ expect test.exp a b
Argument #1 = a
ตัวอย่างการใช้ for เพื่ออ่านค่า argument ทุกตัว
$ cat test.exp #!/usr/bin/expect -- for { set i 0 } { $i < $argc } { incr i 1 } { puts "Argument #$i = [lindex $argv $i]" }
ตัวอย่างการรัน
$ expect test.exp a "b c" d e Argument #0 = a Argument #1 = b c Argument #2 = d Argument #3 = e
ข้อมูลอ้างอิง
- man expect
- Expect – Wikipedia