逻辑运算符
&& 与
|| 或
! 非
位运算符
& 二进制与操作
| 二进制或操作
^ 二进制异或操作
<< 二进制左移运算符
>> 二进制右移运算符
数组定义的格式有两种:
1、set arrName(index) value
2、array set arrName { index1 value1 index2 value2 ...}
()小括号会被当成数组名的标志,而不是变量名的一部分
array set ret {0,0 1 0,1 2 0,2 3 \
1,0 a 1,1 b 1,2 c}
“array set arrName { index1 value1 index2 value2 ...} ”命令格式中没有逗号“,” ,所以逗号会被当成索引字符串的一部分,而不是语法的一部分
意思是ret相当于字典 0,0对应1 0,1对应2 0,2对应3 1,0对应a 1,1对应b 1,2对应c
clock seconds命令以秒为单位返回当前系统的时间。
clock format能将整形时间值转换出包括时间,日期,时区、星期等信息。%m与%A分别代表了时间的分钟值与其对应的星期。
regsub -all { +} $var { } var
将变量var中所有出现的一个空格字符以上的空格串替换成单个空格
regsub 命令基于正则表达式完成字符串匹配和替换,不改变原变量,-all表示替换所有匹配的字符,“+”表示一个或一个以上
list a,b,c 语法正确 只有一个值 叫a,b,c
list “a,“b”,c” 语法不正确,引号内部是会把引号识别成命令的语法,需要使用"\"进行转义才可以在引号内部使用引号字符。
正则表达式——定位符
1. ^ 匹配以^后面的字符开始的字符串。
2. $ 匹配以$前面的字符结束的字符串。
3. \b 匹配单词边界(即从单词靠近空格的地方开始查找),查找匹配\b后或者前面字符的单词。
4. \B 匹配非单词边界(即从单词中查找),查找匹配含有某个字符的单词,该字符不在开始也不在结束。
break命令用于跳出循环体
循环里面的if语句里有break 就是满足if条件就退出循环。
正则命令——regexp
regexp ?switches? exp str ?matchVar? ?subMatchVar subMatchVar ...?
判断正则表达式exp是否匹配部分或全部字符串str,如果匹配返回1,否则返回0。如果在str后面指定了其他参数,则视为变量的名称,其中保存的是str中匹配exp的部分。matchVar保存的是所有匹配exp的字符串。
switches为开关,是以“-”开头的字符串,regexp支持的开头有:
-about 返回一个包含正则表达式信息的列表,而不是尝试匹配正则表达式。列表的第一个元素是子表达式数量。第二个元素是描述正则表达式的各种属性的属性名称列表。此开关主要用于调试。
-expanded 启用正则表达式扩展语法,表达式中的空白符和注释将被忽略。与嵌入式选项(?x)相同。
-indices 更改子matchVar、subMatchVar中存储的内容。不再存储str中匹配的字符,而是存储一个列表其中包含匹配的字符串在string中的起始和结束位置。
-line 开启行敏感匹配。此选项相当于同时指定-linestop和-lineanchor选项。与嵌入式选项(?n)相同。
-linestop 与嵌入式选项(?p)相同。
-lineanchor 与嵌入式选项(?w)相同。
-nocase 忽略大小写
-all 使正则表达式在字符串中尽可能多地匹配,返回找到的匹配项的总数。如果指定了matchVar、subMatchVar,那么只会保存最后匹配的信息。
-inline 将命令结果以列表形式返回,而不是替换到matchVar、subMatchVar变量中,所以当使用此开关时不能指定matchVar、subMatchVar变量。如果与-all一起使用,则会将每次的匹配结果都追加到列表中。
-start index 指定匹配正则表达式的字符串str的起始位置。index的取值与string index中索引取值方式相同。使用此开关时,“^”不再匹配行开头,\A则匹配index开始的str子串的开头。
-- 标记开关结束。后面的参数将被视为exp,即使它以-开头。
regexp { ([0-9]+) ([a-z]+)} " there are 26 files in the directory." str1 str2 str3
puts " $str1,$str2,$str3"
结果26 files,26,files
([0-9]+) *([a-z]+)表示匹配26 files,然后赋值给$str1、$str2和$str3分别为26 files、26和files
正则命令-regsub
regsub ?switches? exp str subSpec ?varName?
基于正则表达式匹配执行替换。将正则表达式exp与字符串str匹配,并将str复制到名为varName的变量中。如果未指定varName则返回str。在str复制的过程中,str中匹配exp的字符串将被subSpec替换。如果subSpec中包含&”或“\0”,则使用str中匹配exp的字符串替换“&”和“\0”。如果subSpec包含“\n”(n为1到9的整数),则使用str中与exp第n个圆括号匹配的字符串进行替换。可以通过在“&”、“\0”、“\n”和“\”前加反斜杠“\”来防止特殊转义。subSpec中使用反斜杠经常会影响Tcl解析器的反斜杠使用,所以如果subSpec中使用反斜杠,通常用大括号括起来。
如果regsub的参数以“-”开始,则视为开关,支持的开关如下:
-all 找到所有与exp匹配的字符串并对每个匹配项执行替换。如果不使用此开关,则只替换一个匹配的字符串。如果使用此开关则使用对应的匹配信息对每个替换出路“&”和“\n”序列。
-expanded 启用正则表达式扩展语法,与regexp相同。
-line 开启行敏感匹配,与regexp相同。
-linestop 与regexp相同。
-lineanchor 与regexp相同。
-nocase 匹配时不区分大小写,但是替换时subSpec使用未转换的字符串。
-start index 指定匹配正则表达式的字符串str的起始位置,与regexp相同。
-- 标记开关结束。后面的参数将被视为exp,即使它以-开头。