expect类似tcl,简要总结如下
1.输出hello world
expect1.1> puts "hello"
hello
2.变量
特殊变量 描述
argc 指命令行参数的个数。
argv 指包含命令行参数的列表。
argv0 是指被解释的文件或由调用脚本的名称的文件名。
#!/usr/bin/expect
puts "argv0: $argv0"
puts "argc: :$argc"
puts "argv All :$argv"
puts "argv1: [lindex $argv 0]"
运行后 ./expect_args.sh
[hadoop@HMASTER shellTest]$ ./expect_args.sh a b c
argv0: ./expect_args.sh
argc: : 3
argv All :a b c
argv1: a
3.操作符
1> []用于计算方括号中的脚本,示例
expect1.4> puts [expr 2*3]
6
2>set 用于设置变量并赋值,puts用于输出
expect1.5> set a 10
10
expect1.6> puts $a
10
4.转义, \用于特殊字符转义
expect1.7> puts "A\nB"
A
B
5.数据结构 列表/数组List
expect1.9> puts [lindex $A 1]
b
expect1.10> set A "a b c"
a b c
expect1.11> puts [lindex $A 2]
c
7.循环for each,while,
1>for each 示例,要注意 a b c }与{puts中间的空格
expect1.15> foreach i {a b c } {puts $i}
a
b
c
2>while示例,要注意 1}与{puts中间的空格
expect1.7>while {1} {puts "loop forever: hello,u"}
loop forever: hello,u
loop forever: hello,u
等等,以及
expect1.7> set a 1
1
expect1.8> while {$a < 5} { set a [expr $a+1]
puts $a}
+> 2
3
4
5
8.spawn 进程交互
9.expect,send 执行命令
10.interact切换手动