การอ่านค่า argument ในสคริปต์ expect

วิธีการอ่าน 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

 

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.