首先贴一下常见的命令

命令 说明
list arg1 arg2 … 创建一个列表
lindex list index 返回列表 list 中的第 index 个元素(element)值
llength list 计算列表 list 元素个数
lrange list index1 index2 返回指定范围内(从 index1 到 index2)的元素
lappend list arg1 arg2 … 将新元素追加到原来列表 list 后组成新的列表
linsert list index arg1 arg2 … 将新元素插入到 list 中位于 index 元素之前的位置上
lreplace list index1 index2 arg1 arg2 … 替换指定范围的元素
lsearch ?mode? list value 根据匹配模式 mode,查找 list 中与 value 匹配的元素位置索引。mode 一般为-exact、-glob 和regexp.默认为-glob。找不到返回-1。
lsort ?switches? list 根据 开关选项对列表进行排序
concat list1 list2 … 连接多个列表内容成一个列表
join list joinChars 以 joinChars 为分隔符将列表中的元素合并在一起
split string splitChars 以 splitChars 中的字符作为分隔符将字符串分解为列表元素。
foreach var list {proc body} 遍历列表各项,逐次将各元素值存入 var 中并执行 proc body。相当于一个循环控制语句。

1.list 命令

list 命令用来创建列表。一个列表可以包含子列表,即列表可以嵌套。

set l1 [list Sun Mon Tues]
结果=>Sun Mon Tues

set l2 [list $l1 Wed] ;#列表 l1 含有三个元素
结果=> {Sun Mon Tues} Wed

set str1 “Sun Mon Tues”
结果=>Sun Mon Tues

set l2 [list $str1 Wed] ;#列表 l2 中含有两个元素。第一个元素用花括号括起来。
结果=>{Sun Mon Tues} Wed ;#和上面的命令结果相同:“列表是特殊的字符串”。
2.concat 命令

concat 命令以空格为分隔符将多个列表拼装在一起形成新的列表。它和双引号的作用比较相似。

set x {1 2}
结果=> 1 2

set y "KaTeX parse error: Expected 'EOF', got '#' at position 9: x 3 " ; #̲x 被替换后,作为列表结构的花括号被去掉,
结果=> 1 2 3 ; #元素被提出来和 3 一起作为新列表的元素

set y “$x {3}”
结果=> 1 2 {3}

set y [concat $x 3] ;#结果同上面的双引号
结果=> 1 2 3

set y [concat $x {3}]
结果=> 1 2 3
3.lindex 命令

lindex 命令返回列表中指定位置的特定元素。列表索引从 0 开始记数!

set x { 1 2 3 }
结果=> 1 2 3

puts [lindex $x 1]
=>2
4.llength 命令

llength 命令可以获得一个列表内元素的个数。

set length “1 2 3 4 5”
结果=>1 2 3 4 5 ;#定义了一个字符串
set num [llength $l1] ;#这里 l1 被看作列表了
=>5
5.lrange 命令

lrange 命令返回一个指定区段的列表元素,可以以 end 或者 end-n 作为索引(n 为正整数)。

lrange {1 2 3 {4 5} 6} 2 end
结果=> 3 {4 5} 6
6.linsert 和 lreplace 命令

linsert 命令用来将元素插入到一个列表的由索引指定的位置。如果索引为 0 或者更小,则元素就会被添加到最前面。如果索引值大于或者等于列表长度,则元素被追加到列表尾部。

其他情况元素被添加到指定位置之前。 lreplace 命令将一个指定区段的列表元素替换为新元素。

如果没有指定新元素,则这个区域的元素就会被从列表中删除。注意:这两个操作不会改变原来列表的内容,而是返回一个新列表。

View Code
7.lsearch 命令

lsearch 命令在给定列表中搜索与匹配字符串匹配的元素,成功就返回正确的元素索引,否则返回-1。lsearch 支持通配符格式,但可以使用-exact 选项将其屏蔽而进行精确匹配。

set l1 [list This is one list]
结果=> This is one list

set index [lsearch $l1 l*]
结果=> 3

set index [lsearch -exact $l1 l*]
结果=>-1

set index [lsearch -exact $l1 list]
结果=>3
8.lsort 命令

lsort 命令实现对列表的排序。排序操作不影响原表,而是返回排序之后的新表。

set list “a Z z n100 n200 M p Hl hL m 1 20”
结果=>a Z z n100 n200 M p Hl hL m 1 20

lsort -ascii $list
结果=>1 20 Hl M Z a hL m n100 n200 p z

lsort -dictionary $list
结果=>1 20 a Hl hL M m n100 n200 p Z z
9. join 与 split 命令

join 命令接收一个列表,并用指定的分隔符将列表元素整合成一个字符串

join {1 {2 3} {4 5 6}} :
结果=> 1:2 3:4 5 6
split 命令的作用与 join 的作用相反,它接收一个字符串,并根据给定的字符将其分割转换成

一个列表。

set str cm8/auto/tools/aries/ASAM/NE/SNMP/IMPL/ne_create_board.tcl
结果=>cm8/auto/tools/aries/ASAM/NE/SNMP/IMPL/ne_create_board.tcl
set s /
结果=>/

set l1 [split $str $s]
结果=> cm8 auto tools aries ASAM NE SNMP IMPL ne_create_board.tcl

set l2 [split $str “/.”] ;#可以指定多个分割符
结果=> cm8 auto tools aries ASAM NE SNMP IMPL ne_create_board tcl
10.foreach 控制结构

foreach 命令/控制结构会遍历整个列表,逐次取出列表的每个元素的值放到指定变量中,使用者可以在跟随的过程体中添加必要的处理过程。

set lst “1 2 3 4”
结果是=>1 2 3 4

foreach l1 $lst {
puts $l1
}
结果是=>
1
2
3
4
例子:将一个
首先清空2个变量这2个变量是用来存放我们写出来的东西

set CPU_MEM_LIBRARY_FILES_1P0V_BC ""
set TOP_MEM_LIBRARY_FILES_1P0V_BC ""

string length判断我们的字符串的长度
string equal -length $mem_length $mem $set_mem判断2个字符串的前mem_length位是否相等
如果判断成功我们将成功的值放入到一个变量中,
如果mem中所有的值都判断不成功,那么我们把他放入到另一个变量中
但是这里我不知道怎么将list中的一个量给删除,所以用了计次的方法计算32次(因为有32个值,mem中)

##build________TOP_MEM_LIBRARY_FILES_1P0V_BC
foreach mem $mem_list  {foreach set_mem  $MEM_LIBRARY_FILES_1P0V_BC {set mem_length [string length $mem]
set results [string equal -length $mem_length  $mem $set_mem]
if {$results == 1} {lappend TOP_MEM_LIBRARY_FILES_1P0V_BC $set_mem
}
}
}
##build________CPU_MEM_LIBRARY_FILES_1P0V_BC
set i 32
foreach set_mem $MEM_LIBRARY_FILES_1P0V_BC  {foreach mem  $mem_list {set mem_length [string length $mem]
set results [string equal -length $mem_length  $mem $set_mem]
if {$results == 0} {set i [expr $i - 1]
#lappend CPU_MEM_LIBRARY_FILES_1P0V_BC $set_mem
}
}
if {$i == 0} {lappend CPU_MEM_LIBRARY_FILES_1P0V_BC $set_mem
} else {}
set i 32
}

tcl脚本中list(列表的用法)附举例说明相关推荐

  1. Shell脚本中循环select命令用法笔记

    在Shell脚本中,select命令是一种菜单扩展的循环方式. 语法结构如下: select Menu in (list) do command done 说明:当程序运行到select语句时,会自动 ...

  2. Shell脚本中循环until命令用法笔记

    在shell脚本中,可以使用until执行循环处理,如果使用until命令的话如果表达式的结果为false时才执行循环体,直到测试表达式的值为true的时候才会 停止循环. 语法结果如下: until ...

  3. tcl脚本使用实例 - 列表,循环,变量拼接, 文件自动写入

    tcl在IC,FPGA领域广泛使用. 列表,循环,变量拼接, 文件自动写入 set values {"360" "1800" "3600"} ...

  4. Shell脚本中函数位置参数的用法笔记

    位置参数主要是用于调用函数的时候有时候需要传递参数,有很大的比例都是需要调用函数的时候动态传递参数,从而实现相应的功能.比如我想要计算两个数的和,可以通过函数是实现,需要定义两个参数作为计算的值.这样 ...

  5. java中讲讲PrintWriter的用法,举例?

    1.2 PrintWriter的用法  马 克-to-win:PrintWriter和PrintStream类似,只不过PrintStream是针对字节流的,而PrintWriter是针对字符流的. ...

  6. java中讲讲DataOutputStream的用法,举例?

    1.4 DataOutputStream的用法 马克-to-win:一定要注意DataOutputStream 与DataInputStream必须配合使用,以便将基本数据类型(int,char,lo ...

  7. python continue 用法_Python中Continue语句的用法的举例详解

    python continue语句返回while循环的开始.Continue语句拒绝在该循环的当前迭代中的其余语句执行并移动控制返回到循环的顶部(开始位置). continue语句可以在while和f ...

  8. linux查看系统任务计划,Linux系统中计划任务的用法及举例

    前几天章郎虫在yardvps买了个便宜vps,本来一个月7.95刀的xen主机,打折后只需要每月6.36刀.配置看上去还行,单核cpu,512M内存,1GSwap.接下来介绍CentOS下我认为必不可 ...

  9. continue在python中什么意思_Python中Continue语句的用法的举例详解

    Python continue语句返回while循环的开始.Continue语句拒绝在该循环的当前迭代中的其余语句执行并移动控制返回到循环的顶部(开始位置). continue语句可以在while和f ...

  10. python中continue语句的作用_Python中Continue语句的用法的举例详解

    Python continue语句返回while循环的开始.Continue语句拒绝在该循环的当前迭代中的其余语句执行并移动控制返回到循环的顶部(开始位置). continue语句可以在while和f ...

最新文章

  1. 源码级深挖AQS队列同步器
  2. 如何制作提交按钮,实现多条件筛选
  3. redis编译安装:make 的新错误--collect2: ld returned 1 exit status
  4. java线程池_Java多线程并发:线程基本方法+线程池原理+阻塞队列原理技术分享...
  5. C++ 一个例子彻底搞清楚拷贝构造函数和赋值运算符重载的区别
  6. 比double精度更高的数据类型_MATLAB中图像的数据类型
  7. sqlite3_setp
  8. 后台管理项目系列-(一)--基本的项目搭建
  9. 用matlab解拉格朗日,用MATLAB实现拉格朗日插值
  10. 双极型晶体管及其放大电路
  11. 心书微信书 v1.0.0
  12. UE4 Slate四 SlateUI如何做动画
  13. 叠氮PEG6基团N3-PEG6-alcohol,86770-69-6
  14. 2017蓝桥杯C/C++B组国赛-瓷砖样式
  15. 工地人员定位原理又是什么--新导智能
  16. 统计git代码行数和本地代码行数的方法
  17. 摘自《PPT设计思维》
  18. Echarts绘制不均匀数据轴(y)
  19. 我的2015---找寻真实的自己
  20. 8点揭示模具爆裂的具体原因

热门文章

  1. 【“计算机科学与技术”专业小白成长系列】Peter Norvig:十年学会编程
  2. Xshell6与Xftp6教育版下载(免费)
  3. python实现最长公共子串
  4. iMindMap2020 中文旗舰免费版
  5. Windows10操作系统搭建C语言开发环境
  6. 计算机管理 服务在哪,信息服务,教您哪里打开Internet信息服务(IIS)管理器
  7. 身份证后四位是否唯一
  8. 57 spi电平转换的坑
  9. 【python】基础语法
  10. wordpress 百度主动推送 PHP,WordPress 百度自动推送插件