TCL脚本学习(过程与文件读写)

过程

在TCL脚本中,过程相当于C语言中的函数,将一系列命令进行重复使用的接口。其语法格式如下:

proc proc_name {arguments} {
      statements;
}

proc 为 TCL 语言过程体关键字。proc_name 为定义过程的名字。arguments 为输入的参数,参数个数可以为 0,也可以为多个。多个参数间用空格符分割。参数为 0 时,直接写大括号“{}”即可,但不可以省略大括号不写。statements 为过程内要执行的命令行。
下面给出一个过程代码实例:

proc compare_add {a b} {
    if {$a > $b } {
        return [expr $a + 3] ;
    } else {
        return [expr $b + 3] ;
    }
}
puts [compare_add 10 5]
puts [compare_add 2 5]

# 13
# 8

全局变量和局部变量

TCL中的全局变量与局部变量与常见的如C不同,TCL中的全局变量只作用于过程的外部。

set a 10
proc add_my {a b} {
    puts "The local Num: $a"
    return [expr $a + $b]
}

add_my 3 5
puts "The global Num: $a"
# The local Num: 3
# The global Num: 10

过程中若想访问全局变量使用global 或者::访问

可变参数

可变参数,当参数个数未知时,采用列表的方式,将输入的一个参数作为列表变量

proc sum {a} {
    set sum 0
    puts "Length is: [llength $a]"
    foreach i $a {
        set sum [expr $sum + $i]
    }
    return $sum
}
#列表调用时也采用列表形式
puts [sum {1 2 3 4}] 
# Length is: 4
# 10

递归调用

使用实例:计算阶乘

proc factorial {num} {
    if {$num <= 1} {
        return 1
    } else {
        return [expr $num * [factorial [expr $num-1]]]
    }
}
puts "5! = [factorial 5]"

# 5!= 120

文件读写操作

open filename access

#access 包括r, w, a, r+, w+, a+ read -nonewhile $fp
#读取并返回文件剩余的所有内容 puts -nonewhile $fp str
#将字符串str写入到标识符为fp的文件中, 如果不加-nonewhile, 则str末尾会加换行符

文件写举例

set fp1 [open "file1.txt" "w"]
puts $fp1 "Content: first line."
puts $fp1 "0x1002"
puts $fp1 "45671234"
puts -nonewline $fp1 "Content: end line"
close $fp1

#则打开的file.txt文件内容如下:

Content: first line.
0x1002
45671234
Content: end line

文件读举例

set fp1 [open "file1.txt" "r"]
set str [read -nonewline $fp1]
puts $str
close $fp1
# Content: first line.
# 0x1002
# 45671234
# Content: end line
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

借问众神明.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值