TCL quick start

本文介绍了TCL编程中的基本概念,包括变量置换、条件控制(if、switch)、循环结构(for、foreach、while)、常用命令(set、unset、expr、incr等)、文件操作函数以及相关示例。

置换

$:变量置换
[xxx]:命令置换
\:escape转义
例子:

group

“”:置换后group
{}:只group不置换

if

if命令需要注意格式,注意空格;并不能像编译型的语言那样,写的很随意。我们心里需要有一根弦,就是这是一个“命令”。

if {条件} {过程}

注意:

  1. if和{条件} {过程}可以理解为“命令 参数1 参数2”, 所以命令、参数1和参数2之间需要有空格;
  2. {条件} {过程}作为参数,需要和命令保持关系,至少要保留一个{和前一个元素在一行。
  3. 如果整个if语句有换行,出错了,报的还是if那一行;
  4. {}内部对空格没有特殊要求。
if {条件} {过程} else {else过程}

else和{else过程}也理解为参数,需要空格间隔。

if {条件} {过程} elseif {条件} {过程} else {else过程}

例子:

if {1} {
	puts helloif
} elesif {1} {
	puts helloelseif
} else {
	puts helloelse
}

循环

for

for {循环变量初始化} {循环变量判断} {循环变量更新} {过程}

按照命令、参数的思路,注意空格. {}内部不需要特别注意空格。
例子:

for {set i 0} {$i<3} {incr i} {puts $i}

foreach

foreach list元素 list {过程}

例子:

set mlist {a {a b} {ab} c}
foreach item $mlist {
	puts $item
}

注意:
参数之间用空分割,不是用“,”分割。

set mlist {a {a b} {ab} c}            √
set mlist {a, {a b}, {ab}, c}         ×

while

while {循环变量} {过程}
按照命令、参数的思路,注意空格. {}内部不需要特别注意空格。
例子:

set i 0
while {$i<3} {
	puts $i
	incr i
}

switch

switch $key {key值1 {过程} key值2 {过程} ... key值n {过程}} 

类似case语句。
按照命令、参数的思路,注意空格. {}内部不需要特别注意空格。
例子:

set key a
switch $key {
	a {puts "my a"}
	b {puts "my b"}
	c {puts "my c"}
}

常用命令

set, unset

set 目标 值

TCL数据类型原则上都是字符串。例如:

set a 0
这里的0是字符串,不是数字0

set不指定特定的值,到有些解释器下可以呈现打印的效果。

set a 0
set a
puts $a
unset 目标

expr

expr 数学运算

由于TCL原则上都是字符串,那么要进行数学运算,就需要用到expr命令。

incr

incr 变量

在for循环中操作循环变量常用的指令。

global

块代码中,如果变量前使用global关键字,则变量为全局变量;否则默认为局部变量。

pwd, cd

目录操作。

glob, {*}, eval

和global长得像,实际没啥关系。可以类比ls命令。能匹配*通配符。

glob *.c *.sv

返回值是一个列表。返回值直接做命令的参数可能会有问题。常和{*} (参数展开语法)或者"eval"一起用来解决这个问题,例如:

file delete \{ *} [glob *.tmp``]
eval file delete [glob * tmp]

format, scan

format:字符串格式
scan:字符串格式扫描

set msg [format "%s is %d years old" $name $aget]
scan "%s is %d years old" msg

regexp

string是否全部或者部分匹配pattern

regexp pattern string

exec

TCL解释器运行其它进程,如:

# TCL调用sh的data命令
exec data

文件操作例子:open, gets, puts, close, flush

proc tgrep {pattern filename} {
	set f [open $filename]
	while {[gets $f line]} {
		if {[regexp $pattern $line]} {
			   puts stdout $line
		}
	}
	close $f
}

参考

  1. 路科验证视频
  2. TCL/TK入门经典
源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值