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={} ;#数据内部的花括号不阻止替换

T脚本语言学习记录-工具(一)的更多相关文章

  1. InstallShield 脚本语言学习笔记

    InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加.     一.基本语法规则      ...

  2. JavaScript--基于对象的脚本语言学习笔记(一)

    1.两种嵌入js的方式    使用javascript前缀构建url:<a href="javascript:alert('执行JavaScript. .')">执行j ...

  3. 学习iOS笔记第一天的C语言学习记录

    c语言基础学习 int num1 = 15; int num2 = 5; int temp = 0; //先把num1放到temp里 temp = num1; //先把num2放到num1里 num1 ...

  4. _vimrc(VimScript脚本语言学习)

    Windows下 syntax on "高亮 "缩进 set cindent "set cin set smartindent "set si set auto ...

  5. C语言学习记录_2019.02.10

    sizeof:给出某个类型或某个变量在内存中占据的字节数:(1个字节8位,即8比特) 格式符 (1)%ld表示数据按十进制有符号长型整数输入或输出. (2)%d表示数据按十进制有符号整型数输入或输出. ...

  6. C语言学习记录

    思路: 工具书: <c程序设计语言> R&K <linux C 编程一站式学习>

  7. Shell脚本语言学习总结

    Shell 是一种脚本程序,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了. 编写第一个Shell 程序 在linux命令行执行 [root@iz2zeexr9tk4ckr7dp ...

  8. Arduino语言学习记录(持续更新)

    几天前某宝买了一套,这几天没工夫.今天开始学学这个“玩具”. 1.Arduino的变量数据类型: 数据类型  数据类型 RAM 范围 void keyword N/A N/A boolean 1 by ...

  9. JavaScript--基于对象的脚本语言学习笔记(三)

    事件处理器 1.一个数据校验表单的例程 <html> <head> <title>js练习</title> <meta http-equiv=&q ...

随机推荐

  1. 添加PHP扩展模块

    php安装好后,可能在初次安装时,会有些模块会有遗漏,但是我们又不想重新编译php,因为耗时是比较长的.我们可不可以在不重新编译安装php的情况下,来为php单独添加某一个模块呢?查找资料,发现还是有 ...

  2. C#互操作

    一.引言 “为什么我们需要掌握互操作技术的呢?” 对于这个问题的解释就是——掌握了.NET平台下的互操作性技术可以帮助我们在.NET中调用非托管的dll和COM组件. ..NET 平台下提供了3种互操 ...

  3. myeclipse 2013破解注册图文教程

    以下这个试过有效 http://www.33lc.com/article/10792.html

  4. 单例模式中的volatile关键字

    在之前学习了单例模式在多线程下的设计,疑惑为何要加volatile关键字.加与不加有什么区别呢?这里我们就来研究一下.单例模式的设计可以参考个人总结的这篇文章   背景:在早期的JVM中,synchr ...

  5. 通用型正方教务(通杀各版本)存在注入(不需登陆)+获得webshell+提权内网漫游

    某个接口页面存在oracle盲注,可以获得当前用户数据库,dump教师用户表,分析密文加密特征(前人研究成果+基友助攻),破译加密的密码.前台管理员登陆,后台文件上传基于黑名单原理,过滤u完全,上传特 ...

  6. redis.conf 具体配置详解

    redis.conf 具体配置详解 # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => ...

  7. weblogic之CVE-2016-0638反序列化分析

    此漏洞是基于CVE-2015-4852漏洞进行黑名单的绕过,CVE-2015-4852补丁主要应用在三个位置上 weblogic.rjvm.InboundMsgAbbrev.class :: Serv ...

  8. HTML5 FormData对象

    利用FormData对象,你可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". 创建一个FormData对象 你可以先创建一个空的F ...

  9. 黑少微服务商店之Iron Cloud微服务开发云

    近日,由黑少微服务研发团队推出的Iron Cloud微服务开发云已经正式对外提供服务,这是国内第一家基于云端操作的微服务专业开发工具. Iron Cloud 微服务开发云(www.ironz.com) ...

  10. 利用PDCA工具改进周例会

    PDCA简介 PDCA循环又叫戴明环,是美国质量管理专家休哈特博士首先提出的,由戴明采纳.宣传,获得普及,从而也被称为“戴明环”. PDCA最早用来解决全面质量管理问题,但是PDCA也可以用来作为一个 ...