- 论坛徽章:
- 0
|
本帖最后由 FunBSD 于 2018-09-23 16:04 编辑
好吧,论坛人气真得不行了。我自己来解答吧。
为了学个expect,连tcl一块学了。
从标准输入(STDIN)、文件(File)、SHELL读取内容的脚本。
测试方法:- cat file.txt | expect -d script.exp
- 或
- echo -e "1 2 3 4\ra b c d" | expect -d script.exp
复制代码 脚本代码:
- #!/usr/bin/expect -f
- puts "从标准输入(STDIN)读取内容"
- set number 0
- while { [gets stdin line] >= 0 } {
- incr number
- puts "Line $number: $line"
- puts "Line $number: [lindex $line 0],[lindex $line 1],[lindex $line 2]"
- }
- puts "STDIN line number: $number"
- puts "--------------------------"
- puts "从文件(File)读取内容"
- set number 0
- set file [open ./file.txt r]
- while { [gets $file line] >= 0 } {
- incr number
- puts "Line $number: $line"
- puts "Line $number: [lindex $line 0],[lindex $line 1],[lindex $line 2]"
- }
- puts "File line number: $number"
- puts "--------------------------"
- close $file
- puts "从文件(File)读取内容,输出时比实际多1行"
- set number 0
- set file [open ./file.txt r]
- foreach line [ split [read $file] "\n" ] {
- incr number
- puts "Line $number: $line"
- puts "Line $number: [lindex $line 0],[lindex $line 1],[lindex $line 2]"
- foreach word [ regexp -all -inline {\S+} $line ] {
- puts "$word"
- }
- }
- puts "File line number: $number"
- puts "--------------------------"
- close $file
- puts "从文件(File)读取内容,输出时比实际多1行"
- set file [open ./file.txt r]
- while { ![eof $file] } {
- set buffer [read $file 100000]
- puts "$buffer"
- }
- puts "--------------------------"
- close $file
- #puts "从相同后缀的文件读取内容"
- #foreach filename [glob *.txt] {
- # set file [open $filenamel
- # #...
- # close $file
- #}
- #puts "从SHELL读取内容"
- #set file [open {| find ./ -type f | xargs grep "content"} r]
- #set file [open "| find ./ -type f | xargs grep \"content\"" r]
复制代码
|
|