Tcl编程简介(四)

TCL info命令和文件路径提取 如果当前有脚本文件正在 Tcl 解释器中执行, 则返回最内层处于激活状态的。今天在某个sdc中看到这样一句话,一下子触及到知识盲区了。否则将返回一个空的字符串。 阅读详情

Tcl编程简介(四)
 

  Error命令


error message
error message info
error message info code

 

  返回一个错误,引起解释器停止运行。info用于初始化全局变量errorInfo。code被付给errorCode。

eval arg ...

  将所有的参数连起来作为命令语句来执行。

exec arg ...

  仿佛是在shell下执行一条命令。


exec ls --color
exec cat /etc/passwd > /tmp/a

exit
exit returnCode

 

  中断执行。

expr arg

  处理表达式。


set a [expr 1+1]
//a=2

file subcommand name

 

  一组用于文件处理的命令。


file subcommand name arg ...
file atime name

 

  返回文件的最近存取时间。

file dirname name

  返回name所描述的文件名的目录部分。

file executable name

  返回文件是否可被执行。

file exists name

  返回1 表示文件存在,0 表示文件不存在。

file extension name

  返回文件的扩展名。

file isdirectory name

  判断是否为目录。

file isfile name

  判断是否为文件。

file lstat name varName

  以数组形式返回。执行lstat系统函数。存储在varName。

file mtime name

  文件的最近修改时间。

file owned name

  判断文件是否属于你。

file readable name

  判断文件是否可读。

file readlink name

  都出符号连接的真正的文件名。

file rootname name

  返回不包括最后一个点的字符串。

file size name

  返回文件的大小。

file stat name varName

  调用stat内和调用,以数组形式存在varName中。

file tail name

  返回最后一个斜线以后的部分。

file type name

  返回文件类型file, directory, characterSpecial, blockSpecial, fifo, link, 或socket。

file writable name

  判断文件是否可写。

flush fileId

  立即处理由fileId描述的文件缓冲区。

for start test next body

  for循环。同C总的一样。


for {set i 1} {$i < 10} {incr i} {puts $i}
foreach varname list body

 

  类似于C Shell总的foreach或bash中的for..in...


format formatString
format formatString arg ...

 

  格式化输出,类似于C中的sprintf。


set a [format "%s %d" hello 100]
//a="hello 100"

gets fileId
gets fileId varName

 

  从文件中读出一行。


set f [open /etc/passwd r]
gets $f

glob filename ...
glob -nocomplain filename ...

 

  使用C Shell风格的文件名通配规则,对filename进行扩展。


ls /tmp
a b c

tclsh>glob /tmp/*
a b c

 

  当加上参数 -nocomplain 时,如文件列表为空则发生一个错误。

global varname ...

定义全局变量。


if test trueBody
if test trueBody falseBody
if test then trueBody
if test then trueBody else falseBody

 

  条件判断,是在没什么说的。


incr varName
incr varName increment

 

  如果没有incremnet,将varName加一,反之将varName加上increment。


set i 10
incr i
//i=11
incr i 10
//i=21
info subcommand
info subcommand arg ...

 

  取得当前的Tcl解释器的状态信息。

info args procname

  返回由procname指定的命令(你自己创建的)的参数列表。

  如:


proc ff { a b c } {puts haha}
info args ff
//return "a b c" 

info body procname

 

  返回由procname指定的命令(你自己创建的)的函数体。

  如:


proc ff { a b c } {puts haha}
info body ff
//return "puts haha" 
info cmdcount

 

  返回当前的解释器已经执行的命令的个数。


info commands
info commands pattern

 

  如果不给出模式,返回所有的命令的列表,内建和自建的。

  模式是用C Shell匹配风格写成的。


info complete command

 

  检查名是否完全,有无错误。

info default procname arg varname

  procname的参数arg,是否有缺省值。

info exists varName

  判断是否存在该变量。


info globals
info globals pattern

 

  返回全局变量的列表,模式同样是用C Shell风格写成的。

info hostname

  返回主机名。


info level
info level number

 

  如果不给参数number则返回当前的在栈中的绝对位置,参见uplevel中的描述。如加了参数number,则返回一个列表包含了在该level上的命令名和参数。

info library

  返回标准的Tcl脚本的可的路径。实际上是存在变量tcl_library中。


info locals
info locals pattern

 

  返回locale列表。


info procs
info procs pattern

 

  返回所有的过程的列表。

info script

  返回最里面的脚本(用 source 来执行)的文件名。

info tclversion

  返回Tcl的版本号。


info vars
info vars pattern

 

  返回当前可见的变量名的列表。

  下面是一些用于列表的命令,范围可以是end。


join list
join list joinString

 

  将列表的内容连成一个字符串。


lappend varName value ...

 

  将value加入列表varName中。

lindex list index

  将list视为一个列表,返回其中第index个。列表中的第一个元素下标是0。


lindex "000 111 222" 1
111
linsert list index element ...

 

  在列表中的index前插入element。

list arg ...

  将所有的参数发在一起产生一个列表。


list friday [exec ls] [exec cat /etc/passwd]
llength list

 

  返回列表中元素的个数。


set l [list sdfj sdfjhsdf sdkfj]
llength $l
//return 3

lrange list first last

 

  返回列表中从frist到last之间的所有元素。


set l [list 000 111 222 333 444 555]
lrange $l 3 end
//return 333 444 555

lreplace list first last
lreplace list first last element ...

 

  替换列表中的从first到last的元素,用element。


set l [list 000 111 222 333 444 555]
lreplace $l 1 2 dklfj sdfsdf dsfjh jdsf
000 dklfj sdfsdf dsfjh jdsf 333 444 555

lsearch -mode list pattern

 

  在列表中搜索pattern,成功返回序号,找不到返回-1。


-mode : -exact 精确
-glob shell的通配符
-regexp 正则表达式

lsearch "111 222 333 444" 111
//return 0
lsearch "111 222 333 444" uwe
//return 1

 
tcl脚本中的info用法 在中,info命令用于获取与程序执行状态相关的各种信息。它能够返回当前环境中的变量、命令、函数等的详细信息,是调试和控制流程时非常有用的工具。以下是info。 阅读详情

相关推荐

TCL脚本中info命令与文件路径操作的实战解析

本文深入解析TCL脚本中info命令与文件路径操作的实战技巧,重点介绍info script命令在动态获取脚本路径、变量检查及调试中的应用,并结合file命令实现跨平台路径处理。通过实际案例展示如何高效处理文件路径、动态加载同级目录文件,并分享高级调试技巧与性能优化建议,帮助开发者提升TCL脚本开发效率。

weixin_26789847的博客 173

tcl.lang.ReflectObject依赖包tcljava-1.2.6.jar

tcl.lang.ReflectObject依赖包tcljava-1.2.6.jar

DAZ Studio 4.10简体中文版安装深度解析:非标汉化与系统级适配

DAZ Studio 是一款面向数字内容创作的3D角色建模与渲染软件,其界面本地化依赖运行时语言加载机制,而非编译内嵌。不同于标准Windows应用的MSI安装流程,4.10简体中文版实为社区汉化补丁包,需在官方英文版基础上完成DLL注入、XML资源绑定与进程级Hook等操作。该过程涉及.NET Framework版本兼容性、Windows Defender行为拦截、hosts文件DNS干扰、NTFS权限继承异常等底层系统约束,技术本质是跨权限层级的环境适配。典型应用场景包括三维动画预演、虚拟制片资产配置及

weixin_30882895的博客 453

TCL info详解

TCL

l12366的博客 1102

Windows 11后台内存优化:禁用或卸载Copilot释放系统资源

在Windows操作系统中,后台进程和服务是系统资源管理的重要组成部分,它们负责维持功能响应与系统集成。其工作原理通常涉及常驻内存、事件监听和预加载机制,以确保用户体验的流畅性。然而,对于追求性能与资源控制的用户而言,非必要的后台服务可能成为隐形的“系统资源吸血鬼”,持续消耗宝贵的内存与CPU周期。从技术价值看,合理管理后台进程能显著提升系统响应速度、降低内存压力,并为高负载应用(如设计软件、虚拟机、开发环境)释放更多可用资源。在应用场景上,尤其适用于配置有限、从事专业创作或多任务处理的Windows 11

weixin_30388677的博客 431

AD25安装本质是EDA环境系统级重建

Altium Designer作为主流PCB设计工具,其安装并非简单程序部署,而是构建一套依赖Windows底层组件(如.NET Framework、DirectX、显卡驱动)的嵌入式电子设计自动化(EDA)运行时环境。理解AD25安装原理,需从Windows系统兼容性、.NET运行时版本、DirectX图形支持等基础技术栈切入,其技术价值在于保障原理图绘制、PCB布线、3D封装集成及Gerber输出等核心功能稳定运行。典型应用场景包括硬件工程师项目启动、学生课程设计交付,以及企业批量部署。本文聚焦AD25

weixin_33947521的博客 403

TCL - info命令

info命令提供了查看TCL解释器信息的手段,它有超过一打的选项,详细说明请参考下面几节。■变量信息info命令的几个选项提供了查看变量信息的手段。info exists varName 如果名为varName的变量在当前上下文(作为全局或局部变量)存在,返回1,否则返回0。info globals ?pattern? 如果没有pattern参数,那么返回包含所有全局变量名字的一个list。如果有

Augusdi的专栏 5453

C-Free 5.0从入门到精通:零基础编写你的第一个C语言程序

本文为零基础编程新手提供了C-Free 5.0 IDE的完整入门指南。详细介绍了这款轻量级C语言开发环境的安装、界面核心功能(编译、链接、运行),并手把手带领读者完成第一个“Hello, World!”程序的编写与调试,帮助初学者快速理解从源代码到可执行文件的完整流程,是掌握C语言编程思想的理想起点。

weixin_29014939的博客 479

Win7系统中必需记住的14个常用快捷键

在使用电脑时,多多少少地都会用到一些快捷键,尤其是在玩游戏,或使用一些软件时。快捷键不仅方便,如果用的好,甚至可以大大提升我们的工作效率。而且,快捷键不仅可以在软件中使用,在Win7系统中其实也有很多实用的快捷键组合。   1.Ctrl+Shift+N:新建文件夹   在文件夹窗口中按Ctrl+Shift+N,可以快速新建一个文件夹。在IE9中按Ctrl+Shift+N,则可以在新窗口

欲将心事诉东风,无怨满城风得意~ 1522

ChatGPT Desktop深度集成指南:VS Code与终端上下文联动实战

ChatGPT Desktop 是一款面向开发者的本地化AI辅助工具,其核心价值在于突破传统网页版AI的‘上下文断层’,通过系统级API(如macOS Accessibility、Windows UI Automation)实时捕获编辑器与终端内容,实现毫秒级上下文注入。它不替代大模型能力,而是重构人机协作链路——将原本耗时43秒的手动复制粘贴压缩至1.8秒内完成。技术原理涵盖三层架构:全局轻量交互、编辑器深度集成(VS Code双向RPC)、终端可见内容抓取。工程实践中,它显著提升调试效率、PR描述生成、

weixin_30689307的博客 413

Windows驱动开发环境搭建:VS2022与WDK版本匹配及避坑指南

驱动程序是操作系统与硬件设备之间的关键桥梁,其稳定性和安全性直接影响系统整体性能。开发驱动程序需要一套与传统应用开发截然不同的工具链,其中Visual Studio与Windows Driver Kit(WDK)的版本匹配是整个环境搭建的成败关键。从内核态编程的基本概念出发,驱动开发涉及编译、签名、调试等多个特殊环节,理解其原理与技术价值是顺利进行工程实践的前提。无论是为硬件厂商开发设备驱动,还是进行内核安全研究,一套可用的开发环境都是基础。本文系统梳理了从VS2022安装、WDK部署到生成第一个.sys文

weixin_34183910的博客 211

SerenityOS Presenter 幻灯片应用使用指南:演示快捷键与 .presenter 文件格式全解析

Presenter 是 SerenityOS 内置的一款极简幻灯片演示应用,专为"现场演讲时尽量不挡路"而设计:你只需准备一个手写友好的 JSON 文件,即可通过命令行或图形界面打开,用键盘完成翻页、黑屏/白屏、全屏等全部演示操作。本文将以 [Presenter 手册](https://link.gitcode.com/i/422030b2c7b0105ae2d720e91c9705a3) 与 [

gitblog_00446的博客 397

【算法设计与分析】期末复习题(超详细)

刚刚整理了一下电脑的文件,发现了这份上学期的算法设计与分析期末复习题,有需要的文后自取。

a1234567822的博客 6616
上一篇: Tcl编程简介(三)
下一篇: Tcl编程简介(五)
Image_Graphics
博客等级 码龄20年 18粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值