1 Tcl基本知识

1.1 Tcl是什么?

  • Tcl全称是Tool Command Language,是一种基于字符串的命令语言。
  • Tcl是一种解释性语言,类似于其他脚本语言一样,直接对每条语句顺次解释执行。
  • Tcl数据类型简单,对于Tcl来说,它要处理的数据结构只有字符串。Tcl将变量以字符串的形式进行存储。
  • Tcl的执行是交互式的,Tcl提供了交互式命令界面,tclsh和wish。tclsh只支持Tcl命令,wish支持Tcl和Tk命令。通过交互界面,可以像shell命令一样,逐条执行,并即时得到
  • Tcl/Tk与C/C++有良好的兼容性。Tcl/Tk脚本可以很好的集成到C/C++程序中

1.2 Linux执行Tcl脚本

  1. 脚本的第一行制定tcl脚本解释器
  1. #!/usr/bin/tcsh
  1. 确保脚本可执行
  1. chmod +x test.tcl
  1. 执行脚本
  1. ./test.tcl

1.3 Tcl命令格式

  1. command arg1 arg2......
  2. (命令 参数1 参数2)......
  • command是Tcl内建命令或者是Tcl过程。
  • 多条命令可以放在一行或者是多行,每条命令使用“;”进行分隔。
  1. command1 arg1......;command2 arg2......
  • tcl中注释是以#进行表示的

    以下输出命令会在终端输出一段字符串:
  1. puts "The next line contains an error"
  2. # result
  3. The next line contains an error
  • 如果字符串有空格的话,要使用“”或者是{}括起来。因为tcl中命令与参数之间是以空格进行分隔的。不同{}或者是“”括起来,容易发生错位。
  1. {字符串}
  2. “字符串”

1.4 Tcl脚本文件和source命令

处理在命令行窗口进行交互式的执行tcl命令之外,还可以将tcl命令放到一个后缀名为.tcl的脚本文件中,然后用Tcl的命令source进行执行。

  1. source fileName

source命令从文件中读取Tcl命令来计算。

  1. # el.tcl文件内容
  2. puts "hello"
  3. # 执行脚本文件
  4. source el.tcl
  5. # result
  6. hello

1.5 可执行脚本文件(Executable File)

编写完tcl脚本文件中,可用source命令来运行该脚本。但是需要先启动tclsh。如果想要将tcl执行在当前shell,比如Unix和Linux的shell中,能够自动进行启动tclsh就会十分方便。所以在写脚本的时候可以将脚本写成可执行脚本。

编写可执行脚本文件,必须有Tcl启动脚本,进行调用tcl解释器以及完成初始化必要的变量。每个平台都有自己的启动脚本

  1. 在UNIX中,最普遍的编写可执行应用程序的方式是用“#!”机制。用它生成的启动脚本
  1. #!/usr/bin/wish -f

这个启动脚本告诉Shell,用wish来执行剩余的脚本,用-f是支持3.6以下的Tk版本脚本。这种启动脚本需要提供wish或tclsh的绝对路径名,不利于移植于不同的机器上。因为不同的机器上,wish和tclsh的路径可能会有所不同

在用PATH和LD_LIBRARY_PATH制定wish/tclsh及其库的情况下,可以编写下面格式的启动脚本:

  1. #!/bin/sh
  2. # the next line restarts using wish \
  3. exec wish8.0 "$0" "$@"

上面的脚本最后会将wish应用程序安装到用户目录下。第二行的\对于UNIX sh来说被认为是注释的一部分,但是对于tcl脚本来说,\表示下一行是注释的继续。

  1. # 运行tcl脚本
  2. ./xxx.tcl

1.6 #!的解释

  1. #!/bash/sh
  • 表示使用/bin/sh来解释执行脚本。#!表示特殊表示符,其后面跟的是解释此脚本的shell路径。
  • shell种类有很多:bash\csh\sh....
  • sh是shell中的一种,命令文件所在路径/bin/sh或者/usr/bin/sh
  • 还可以用其他脚本语言进行编程比如:/bin/csh、/bin/per、/bin/awk、/bin/sed、/bin/python、/bin/echo等。
  • 查看系统支持的shell
  1. cat /etc/shells
  • 查看tcl安装路径
  1. which tcl

01-Tcl基本知识的更多相关文章

  1. SSAS系列——【01】准备知识

    原文:SSAS系列--[01]准备知识 关于SQL Server 产品,我从2004年就开始使用了,SQL Server 2K,2K5,2K8,到如今已经准6年了,说来惭愧,这六年来所涉及的内容都是在 ...

  2. Spring笔记01(基础知识)

    1.基础知识 01.Spring:轻量级Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建. 02.目标:实现一个全方位的整合框架,实现“一站式”的企业应用开发 ...

  3. 【java基础】01 计算机基础知识

    一.计算机基础知识 1. 计算机 1. 什么是计算机? 计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设 ...

  4. 01.Net入门知识

    1..Net学习路线及几个容易混淆的概念 .Net只是一个平台,提供运行.Net程序需要的虚拟机.类库等 C#就是.Net平台下的一个开发语言,.Net下的语言还有VB.Net.PowerShell等 ...

  5. 01.python基础知识_01

    一.编译型语言和解释型语言的区别是什么? 1.编译型语言将源程序全部编译成机器码,并把结果保存为二进制文件.运行时,直接使用编译好的文件即可 2.解释型语言只在执行程序时,才一条一条的解释成机器语言给 ...

  6. python笔记01:基础知识

    1.4 数字和表达式 # -*- coding:utf-8 -*- #1.4 #除法 print 1 / 2 print 1.0 / 2 print 10 / 3 print 10.0 / 3.0 p ...

  7. 01 Django基础知识

    相关概念 软件框架 一个公司是由公司中的各部部门来组成的,每一个部门拥有特定的职能,部门与部门之间通过相互的配合来完成让公司运转起来. 一个软件框架是由其中各个软件模块组成的,每一个模块都有特定的功能 ...

  8. SpringCloud入门01之基础知识

    一.Spring Cloud 什么是spring cloud, 为什么要使用微服务架构? 参考度娘 Spring Cloud是一系列框架的有序集合, 它利用Spring Boot的开发便利性巧妙地简化 ...

  9. 01.UNIX基础知识

    1.UNIX体系结构 什么叫做内核? 内核是一种软件,它控制计算机硬件资源,并提供程序的运行环境. 什么叫操作系统? 在广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,如可以 ...

  10. python其他知识目录

    博客目录总纲首页 基础的重要性(程序员之路) 做一个“合格”的程序员(一)——基础能力 作为一个程序员,数学对你到底有多重要 同样是程序员,为什么别人比你更优秀? ------------------ ...

随机推荐

  1. python-windows下如何将单个py文件生成exe文件

    这需要pyinstaller,在cmd执行pip install pyinstaller命令 安装完成后,执行 pyinstaller -F 目录 可执行文件于是就在同个目录下的dist目录顺利生成了 ...

  2. RabbitMQ安装说明文档(超详细版本)

    RabbitMQ安装说明文档(超详细版本) 1. 安装依赖环境 在线安装依赖环境: yum install build-essential openssl openssl-devel unixODBC ...

  3. 记录第一次在Linux环境编译第三方C++库

    要使用clion编程,需要curl库,在官网下载源代码自己编译:https://curl.haxx.se/download.html 解压后进入路径,配置编译选项: 1 # ./configure - ...

  4. Nginx配置-1

    1.绑定nginx到指定cpu [root@nginx conf.d]# vim /apps/nginx/conf/nginx.conf worker_processes 2; worker_cpu_ ...

  5. Windows 环境搭建 PostgreSQL 物理复制高可用架构数据库服务

    PostgreSQL 高可用数据库的常见搭建方式主要有两种,逻辑复制和物理复制,上周已经写过了关于在Windows环境搭建PostgreSQL逻辑复制的教程,这周来记录一下 物理复制的搭建方法. 首先 ...

  6. 【题解】CF45I TCMCF+++

    题面传送门 题目描述 有 \(n\) 个数 \(a_i\) 请你从中至少选出一个数,使它们的乘积最大 解决思路 对于正数,对答案一定有贡献(正数越乘越大),所以输入正数时直接输出即可. 对于负数,如果 ...

  7. Kubernetes集群YAML文件详解

    Kubernetes集群YAML文件详解 概述 k8s 集群中对资源管理和资源对象编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到YAML 格式文件中,我们把这种 ...

  8. 读 Clean Code,关于变量命名和可维护代码

    原文见 http://mindprod.com/jgloss/unmain.html 如何写出不能维护的代码 如何程序命名 容易输入的名字.比如:Fred,asdf 单字母的变量名.比如:a,b,c, ...

  9. 【iOS逆向】某营业厅算法分析

    阅读此文档的过程中遇到任何问题,请关注公众号[移动端Android和iOS开发技术分享]或加QQ群[812546729] 1.目标 使用frida stalker分析某营业厅的签名算法. 2.操作环境 ...

  10. 【Android】Configuration中的locale已过时

    Configuration中有很多属性的设置,在编译时提示错误说locale已过时这个是设置语言的 使用最新的方法如下 configuration.setLocale(locale);