Using tcl with synopsys command
1. dc shell特有命令
source rename history exit
2.dc shell支持的tcl cmd
after exec history* open split
append expr if package string
array exit* incr pid subst
binary fblocked info proc switch
bgerror fconfigure interp puts tell
break fcopy join pwd time
catch file lappend read trace
cd fileevent lindex regexp unset
clock filename linsert regsub update
close flush list rename* uplevel
concat for llength return upvar
continue foreach lrange scan variable
encoding format lreplace seek vwait
eof gets lsearch set while
error glob lsort socket
eval global namespace source*
3.dc shell命令的使用
- 交互式:enter dc shell cmd
- 脚本:source script_file
4.基本命令的使用
- 一条基本的命令通常是由cmd+arguments或是cmd+option+arguments
- 命令之间通过分号或换行符进行分隔
- 一条长命令可以在当前行尾处加进行分隔,使一条命令分布在不同行
5.通配符的使用
- * :匹配任意字符
- ?:匹配单个字符
6.大小写敏感
- cmd对字符是大小写敏感的
7. 列出并重新运行先前输入的命令
- 使用history命令可以列出之前运行的命令(默认20条)
- history info number:列出之前number条执行的命令
- history redo number:重新执行event number对应的命令
- history redo -2:执行倒数两条命令
- !!:重新执行最后一条命令
- !6:执行event number为6的命令
8.命令状态
-
命令状态是命令的返回值
-
命令返回值重新设置
- > :重定向符号将命令结果重定向到一个文件中
- 内置重定向命令:redirect - tee file_name {命令变量};命令结果重定向到文件并打印到屏幕;
9.echo/puts打印
- echo similar to bash
- puts similar to tcl
10.运行脚本
- source script_name.tcl:加载并执行tcl脚本
- source -echo -verbose script_name.tcl:显示执行的命令及命令的结果
- source -echo -verbose script_name.tcl > filename:命令及结果重定向到一个文件
11.字符串
cmd | describe |
---|---|
format | 格式化字符串 |
regexp | 字符串内索引 |
regsub | 正则替换 |
scan | 字符串内字段赋值给变量 |
string | 字符串操作函数 |
subst | 执行替换 |
12.列表
-
语法格式
set listname “value1 value2 ... valuen” set listname [list value1 value2 ... valuen] set listname {value1 value2 ... valuen} set listname [list {value1 value2} {value3 value4} valuen]
-
example:
-
list command:
cmd describe concat 连接列表并返回一个新的列表。 join 将一个列表中的元素连接成一个字符串 lappend 将元素追加到一个列表中 lindex 从一个列表中返回一个特定的元素 linsert 列表中插入一个元素 list 返回一个由其参数形成的列表 llength 列表长度 lrange 列表中提取部分元素 lreplace 列表替换元素 lsearch 列表查找元素 lsort 列表排序 split 字符串分割为列表
13.数组
-
语法格式
set arrayname(index) value array set arrayname [list index0 value0 index1 value1 indexn valuen]
-
array command
cmd describe array size 返回数组大小 array names 返回数组索引值
14.if command
-
语法格式
# ======================================== # if {condition} { commands } # ======================================== # if {commands} { commands } else { commands } # ======================================== # if {commands} { commands } elseif {condition} { commands } else { commands } # ======================================== #
15.while command
-
语法格式
while {condition} { commands }
16. for command
-
语法格式
for {initial condition} {termination condition} {reinit condition} { commands }
17.foreach command
-
语法格式
foreach var $list { commands }
18.break/continue
- break:跳出整个循环块
- continue:跳出当前循环条件,进入下一轮循环
19.switch command
-
语法格式
switch var { pattern1 {commands1} pattern2 {commands2} ... default {commands_default} }
20.文件操作
-
cd/pwd same as linux command
-
文件命令
cmd describe file dirname fname 返回文件路径 file exist fname 如果文件名存在,返回1,否则返回0 file extension fname 返回文件名的扩展部分 file isdirectory fname 如果文件名是一个目录,返回1,否则返回0 file isfile fname 如果文件名是一个文件,返回1,否则返回0 file readable fname 如果文件是可读的,返回1,否则返回0 file writable fname 如果文件是可写的,返回1,否则返回0 file rootname fname 返回文件名的名称部分 file size fname 返回一个文件的大小,单位是字节。 file tail fname 从文件路径字符串中返回文件名 -
open
open fname mode
cmd describe r 打开文件仅用于阅读,该文件必须已经存在,默认访问模式。 r+ 打开文件进行读写;该文件必须已经存在。 w 打开文件,仅用于写入,如果该文件存在,则截断它。如果该文件不存在,则创建它 w+ 打开文件进行读写。如果该文件存在,则截断它。如果文件不存在,则创建它 a 打开文件仅用于写入;新的数据被追加到文件中。该文件必须已经存在 a+ 打开文件进行读写。如果该文件不存在,则创建 它。新的数据被追加到该文件中 -
close
close $fileID set files [open main.tcl w+] close $files
-
flush
flush $fileID #使用flush命令来强制将缓冲输出写入文件
21.gets/puts
-
gets
#使用gets命令从一个文件中读取一个单行数据 get $fileID var #$fid参数是文件的ID,该文件是通过打开命令获得的;var参数是接收数据行的变量。var参数是接收该行数据的变量。
-
puts
#puts命令,向文件中写入单行 puts $fileID var #参数$fid是文件的ID,是通过打开命令获得的;参数var包含要写入的数据。var参数包含要写入的数据。puts命令在输出数据前在其上添加一个新行字符,然后再输出数据