T脚本语言学习记录-工具(一)
1、set & unset
%set a Hello ;#定义变量 a 并赋值
=>Hello
%puts $a ;#输出变量值
=>Hello
%set a “Test Tcl” ;#重新赋值
=>Test Tcl
%set a ;#输出变量值,此时不加”$”
=> Test Tcl
%puts $a ;#输出变量值,此时要加”$”
=>Test Tcl
%puts a ;#输出字符”a”
=> a
%set b $a ;#将 a 的值赋给 b
=>Test Tcl
%puts $b
=>Test Tcl
% unset a ;#释放变量
%puts $a ;#试图输出未定义变量的值
=> can't read "a": no such variable
2、$ & []
%set foo oo
=>oo
%set dollar foo
=>foo
%set x $$dollar
=>$foo ;#只解释一次,将“ $dollar”用 dollar 的值( foo)代替,
;#命令等效为 set x {$foo},大括阻止替换。
% set x {$foo}
=>$foo
%set y $x
=>$foo ; #一轮替换 % set b [set a ] ;#set a 命令输出的结果赋给 b
=>
%puts $b ;#方括号命令替换,expr表示进行数学计算,外围用方括号括起来
=>
%set c [expr * ] ;#将乘式结果赋给 c
=>
3、" " & { }
双引号和花括号将多个单词组织成一个参数,也是一种替换操作。如果花括号是用做替换操作,则它会阻止内部的嵌套替换,如果花括号用做界限符,如过程定义时用做界限过程体时,不阻止替换操作,其他还有 if 条件语句、循环语句、 switch 语句和过程声明、数学表达式等。
%set s hello
=>hello
%puts stdout "The length of \"$s \"is [string length $s]" ;# “string length” 命令是计算 Tcl 编程初步
;#字符串长度,用反斜杠”\”来引用特殊字符。
=>The length of hello is
%puts stdout {The length of $s is [string length $s]}
=>The length of $s is [string length $s] ;#替换操作被阻止
%set x
=>
(bin) % set y
=>
(bin) % set z [expr {$x + $y}] ;#expr 表示进行数学运算,要用[]括起来
=> ;#用{}来组织算术表达式,不阻止$替换操作
% if { $x == } { puts “x=$x”}
=> x= ;#在条件语句中, {}用来界定条件体和执行体,不阻止内部替换
4、 \
% set x
=>
%set y "$x"
=>
%set y "\$x"
=>$x ;#引用$符
%puts "he\nllo" ;#回车换行
=>he
llo
%puts "\a" ;#震铃(需要在 tclsh 下运行)
% set b [puts \
$y ] ;#代码换行
=>$x
5、incr
incr 命令根据指定的步长来增加或减少参数的值。当步长为负时,减少参数值;当步长为正
时,增加参数值。默认步长为+1。
%set a ; incr a
=>a=
%set a ; incr a –
=> a=
6、基本命令集
命令 描述
append 将值追加到字符串尾
binary 二进制字符串操作
format 字符串格式化
regexp 正则表达式(用于字符串模式匹配)
regsub 用正则表达式进行字符串模式匹配和替换
scan 字符串分解
string options 字符串操作和命令集
subst 字符替代(替代特殊字符)
- append
%set var1 Hello
%set var2 World
%append var1 $var2
=>HelloWorld
%puts $var1
=>HelloWorld ;#var1 的内容被更改! - format
;#要取第 个变元值,即 。位置说明符的格式为 $,并用\来引用符号$:
% set res [format "%2\$s" ]
=>
%puts $res
=>
% set str [format "%3\$s %1\$s %2\$s" "are" "right" "You"]
=> You are right%format "%x"
=> ;# 将 转换为十六进制数
%format "%8x"
=> ;# 将 转换为十六进制数, 位数据宽度,右对齐
%format "%08x" => ;#与上一命令相似,但用 添齐
%format "%-8x"
=> ;#宽度 位,左对齐
%format "%#08x"
=>0x000014 ;#将 转换为十六进制数,并添加前缀”0x”,
;#总宽度为 为,右对齐(默认),前导空格用 补齐。
% set c [format %c%e%c ]
=> ( 3.000000e+004) ;#%c 将整数转换为对应的 ASCII 字符, 和 分别对应”(“和”)”
% set num [scan Aa %c var1 ]
=> ;#将字符串”Aa”的第一个字符”A”转换为对应整数,
;#并赋值给 var1 变量,返回成功转换个数
% puts $var1
=> ;#字符 A 对应的整数上例最后一个 format 格式命令中, ”%c”一个整数转换为对应 ASCII 字符输出
- scan
%set num [scan "abcABC" "%c%c " var1 var2]
=>
%puts "$var1 $var2"
=>
% set num [scan "abcABC" "%c%c" ]
=>
%puts $num
=> ;#忘记指定输出变量的结果
;#格式描述说明要扫描小写的 a 到 z 区间的连续字符,用到了花括号表明是一个集合
% scan "abcABC" {%[a-z]} res
=>
% puts $res
=> abc
% scan "ABCabc" {%[A-b]} res
=>
% puts $res
=> ABCab
% scan "ABCab" {%[^a-b]} res
=> ;#匹配非 a 到 b 的字符
% puts $res
=>ABC
% scan ABCab {%[^a-b]} res
=> ;#照样可以指定匹配字符数
% puts $res
=>AB- binary
%set b [binary format "s" ]
=> @d ;#整数 以十六进制表示为 6440H。 “s”为格式说明
;#符,按照由低到高字节顺序存储。
% puts $b ;#数值被压缩为两个字节,输出的结果为两个压缩字节对
=> @d ;#应的两个字符, @的 ASCII 码为 40H, d 的 ASCII 码为 64H
% binary scan $b "s" var
=> ;#返回转换成功的次数
% puts $var ;#binary scan 从二进制数 b 中将数值恢复并存入变量
var
=>
% binary scan c var ;#从字符 中恢复数值。字符 的 ASCII 码=31H, 31H 对应十
=> ;#进制整数为
% puts $var
=>subst
% subst { a=$a sum=[expr + ]}
=> a=foo bar sum=
% subst { a={$a} sum={[expr + ]}}
=> a={foo bar} sum={} ;#数据内部的花括号不阻止替换
最新文章
- Tomjson - 一个";短小精悍";的 json 解析库
- JS滚轮事件封装
- jquery练习(赋予属性值)
- Visual Studio 代码折叠快捷键(摘要)
- Linux 之 shell 比较运算符
- 详解js中的闭包
- JTAG的SWD接线方式
- accp8.0转换教材第1章多线程理解与练习
- Thinkphp3.2.3框架下封装公共的函数,例如封装CURL函数来获取接口数据
- FastDFS的安装步骤
- [TJOI 2016&;HEOI 2016]求和
- linux相关命令及配置(四)
- Linux下安装Python3.6
- 翻译:delete语句(已提交到MariaDB官方手册)
- python3 练习题(用函数完成登录注册以及购物车的功能)
- Android Studio 解决ADB检测不到手机导致无法连接的问题
- Maximum Size Subarray Sum Equals k LT325
- virtual box 5.2.12 扩展包安装
- 字符串中包含汉字和\u,显示出汉字来
- Linux基础命令---rmdir
热门文章
- WritePrivateProfileString、GetPrivateProfileString 读写配置文件
- 高可用web框架
- struts2(2.0.x到2.1.2版本)的核心和工作原理(转)
- 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165322
- 【[SDOI2011]拦截导弹】
- Inno Setup添加中文安装语言文件
- Django实战(二)之模板语言
- selenium断言的分类
- SDN测量论文粗读(三)9.24
- iOS12适配及问题记录,Debug正常使用,Release数据为nil的报错