02-Tcl输出、赋值与替换
2 Tcl输出、赋值与替换
2.1 puts
Tcl的输出命令是puts,将字符串标准输出channelled。语法中两个问号之间的参数为可选参数。
# 例1
puts hello
# 输出
hello
# 例2
puts -nonewline "hello hello"
# 输出
hello hello
- 如果输出一段有空格的文本,则要用双引号("")或花括号({})起来。
- -nonewwhile选项告诉puts不输出回车换行。
注意:双引号和花括号的作用是将多个词组织成一个变元,但是""和{}是由区别的。""在进行替换操作的时候,前者允许替换操作发生;{}会阻止替换。
2.2 set
set varName [value]
unset vaName
- set:变量定义和赋值命令,不必制定变量值得类型,因为变量值得类型只有一种--字符串。在为变量进行赋值的时候,会为变量开辟一段内存空间来存储变量值
- set VarName不跟变量的值,如果变量已经定义,则返回变量的值,效果和puts相同;变量不存在会返回错误信息。相当于查询的作用。
- unset与set的作用相反,它取消变量的定义,并释放变量所占的内存空间
- 通过前置的“$”符,可以引用变量的值(替换)。
set a Hello # 定义变量a并为其赋值
puts $a # a=Hello
set a "Test Tcl" # 重新给a赋值
set a # 输出Test Tcl
puts a # 输出字符a
set b $a # 定义变量b,并将a的值赋值给b b=Test Tcl
puts $b # b = Test Tcl
unset a # 释放变量
puts $a # 试图输出未定义的变量值,会进行输出
- puts $a由两步完成:首先用a的值替换$a,替换后的命令变为puts {Test Tcl},然后输出字符串。也就是说先替换后输出。
- 数组定义在后面进行介绍。
2.3 替换
2.3.1 $
$实现引用替换,用来引用参数值。
tcl在使用$进行引用替换的时候,只会进行一次解释,嵌套使用$$xxxx,只有一个起作用。
set foo oo
set dollar foo
set x $$dollar # x = $foo
set y {$foo} # y = $foo {}阻止替换
set z $x # z = $foo
- $$dollar,将$dollar用dollar的值foo进行替换,前面的$不起作用,作用字符输出。
2.3.2 []
方括号[]书写完整的命令替换,[]中的执行后,返回结果。
set b [set a 5] # set a 5命令输出的结果赋值给b b=5
puts b # b = 5
set c [expr 5*10] # 将乘式的结果赋值给c
puts c # c = 50
2.3.3 ""和{}
""和{}将多个单词阻止在一起组成一个参数,也是一种替换操作。一般在""内进行正常替换,在{}中的替换可能被阻止。当{}用于组织算数表达式、if条件和函数内执行体的代码块的时候,不会阻止替换。
set s hello
puts stdout "The length of\"$s\" is [string length $s]"
=>The length of hello is 5
# ""内再使用双引号的时候要使用转义字符。
# string length $s 计算字符串s的字符串长度
puts stdout {The length of $s is [string length $s]} # 替换操作被阻止
=>The length of $s is [string length $s]
set x 10
set y 20
set z [expr{$x + $y}]
=>30
if{$x == 10} {puts "x = $x"}
=>x=10
- expr表示进行数学运算,要用[]括起来
- 用{}来组织算数运算表达式,不阻止$替换操作
- 在条件语句中,用{}来界定条件体和执行体,不阻止内部的替换
2.3.4 \
反斜杠“\”的作用是引用特殊字符或者续行。
应用特殊字符的操作是告诉TCl解释器需要使用一些特殊的字符,如$符或者完成特定功能比如\n,\t,\b.....,相当于转义字符的作用。
如果一条语句过长,可以使用“\”,将一行语句分为多行进行书写。
set x 100
set y $x # y = 100
set z "\$x" # z = $x \$表示告诉tcl使用$符号
puts "he \nllo" # \n换行
=>he
llo
puts "\a" # 振铃
set b [puts \
$y]
注意:当用set命令为参数,赋值,并""用作续行符的时候,不要在反斜杠后面同一行上输入任何符号,包括空格和制表符。否则反斜杠(\)就起不到续行的功能,容易引起错误。
02-Tcl输出、赋值与替换的更多相关文章
- grep查询文本:问一个简单shell问题,将grep的输出赋值给一个变量
问一个简单shell问题,将grep的输出赋值给一个变量 用grep命令得到的输出赋值给一个变量不成功. grep命令如下: 代码: $ grep -c '^abc' file.txt 输出为22,表 ...
- JavaScript---Dom树详解,节点查找方式(直接(id,class,tag),间接(父子,兄弟)),节点操作(增删改查,赋值节点,替换节点,),节点属性操作(增删改查),节点文本的操作(增删改查),事件
JavaScript---Dom树详解,节点查找方式(直接(id,class,tag),间接(父子,兄弟)),节点操作(增删改查,赋值节点,替换节点,),节点属性操作(增删改查),节点文本的操作(增删 ...
- thinkphp 视图(二)变量输出、赋值和替换
view下的html文件会编译成php文件 编译的文件在runtime 下的temp目录 <p>{$email}</p> 会编译成 <?php echo $email; ...
- 简单解说Linux命令输出与命令替换
Linux命令能提高更方便的使用性能.下面就这就来讲术Linux命令.将一个程序或Linux命令的输出作为另一个程序或命令的输入,有两种方法,一种是通过一个临时文件将两个命令或程序结合在一起,例如上个 ...
- Shell总结02-shell变量、赋值与替换
变量 shell并不区分变量的类型,或者说变量都是弱类型的,本质上都是字符串,但是如果变量值中只含有数字,shell还是支持对其进行算术运算 赋值 常见的赋值操作符有=(在其前后没有空白符)和let ...
- tp5 配置 // 视图输出字符串内容替换 'view_replace_str' 的原理
- thinkphp 模板变量输出替换和赋值
一.变量输出的几个方法 <?php namespace app\index\controller; use http\Params; use think\Config; use think\Co ...
- Linux终端中的字符串使用总结(截取,切片,查找替换,转换,变量赋值等)
1.基于模式匹配截取字符串 1.#.##号截取 #号截取,从左边开始,以一个出现的分隔符(最左)为准,删除左边字符. ##号截取,从左边开始,以最后(最右)一个分隔符为准,删除左边字符. str='h ...
- TCL语言笔记:TCL基础语法
一.什么是TCL Tcl 全称是 Tool command Language.它是一个基于字符串的命令语言,基础结构和语法非常简单,易于学习和掌握. Tcl 语言是一个解释性语言,所谓解释性是指不象其 ...
- Shell教程4-Shell替换
如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: 复制纯文本新窗口 #!/bin/bash a=10 echo -e & ...
随机推荐
- go-zero docker-compose 搭建课件服务(九):http统一返回和集成日志服务
0.索引 go-zero docker-compose 搭建课件服务(九):http统一返回和集成日志服务 0.1源码地址 https://github.com/liuyuede123/go-zero ...
- 中国制霸生成器「GitHub 热点速览 v.22.42」
火遍推特的中国制霸生成器本周一开源就占据了两天的 GitHub Trending 榜,不知道你的足迹遍布了多少个省份呢?同样记录痕迹的 kanal 用了内存读写方式解决了 Rust 的消息处理问题,P ...
- Python 根据两个字段排序 中文排序 汉字排序 升序 降序
Python3写法 代码 # -*- coding: utf-8 -*- # 需求:年龄倒序,姓名正序 from itertools import chain from pypinyin import ...
- 2.CBV和类视图as_view源码解析
一.FBV和CBV # 视图基于函数开发 FBV: function.base.views # 视图基于类开发 CBV: class .base .views #Python是一个面向对象的编程语言, ...
- spring源码解析(二) 结合源码聊聊FactoryBean
一.什么是FactoryBean FactoryBean是由spring提供的用来让用户可以自定bean创建的接口:实现该接口可以让你的bean不用经过spring复杂的bean创建过程,但同时也能做 ...
- java将流量KB转换为GB、MB、KB格式
/** * 转换流量格式为xxGBxxMBxxKB * @param flow 156165(xxxxxx) */ public String changeFlowFormat(String flow ...
- 关于linux上实现arp攻击截取密码
前言 这几天简单的研究了一下arp攻击,有一些进展,记录一下 环境准备 这里我是利用arpspoof 这个软件简单实现arp攻击,这个命令是属于dsniff 软件包中的 所以首先安装软件 sudo a ...
- windows error LNK2019
温馨提示,请使用ctrl+F进行快速查找 ws2_32.lib error LNK2001: 无法解析的外部符号 __imp_htons error LNK2001: 无法解析的外部符号 __imp_ ...
- 教你用JavaScript实现随机点名
案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript相关知识,做一个随机点名的案例.你可以通过点击开始按钮控制上方名字的闪动,点击停止按钮可以随机选定一个名 ...
- .net6+wpf制作指定局域网ip无法上网的arp欺诈工具
摘一段来自网上的arp欺诈解释:ARP欺骗(ARP spoofing),又称ARP毒化(ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技 ...