❶ tclsh 是什麼
網路一下,你會知道有一種工具叫activetcl,安裝完成後在運行中輸入 cmd ,然後再輸入 tclsh,就出現一個% 命令提示符,tclsh就是腳本解析器啦。
❷ tcl文件如何從shell命令行讀取參數
Introction
Although Tcl scripts/proceres can be controlled via graphical user interfaces (GUI's) that have been implemented with the Tk toolkit, it is often easier to use traditional command line techniques. Another tutorial, using the command line, gave a simple example of invoking a Tcl script from the command line.
This tutorial demonstrates how, at the time a script is invoked, data can be passed to the script from the command line.
arguments
Items of data passed to a script from the command line are known as arguments. For example, take the simple script presented in using the command line tutorial.
puts [expr 3 + 2]
Lets assume the script has been saved as add.tcl and that the present working directory of the shell window in which we are working matches the directory in which the script has been saved. We know the script can be run using the following command,
tclsh add.tcl
Of course the output is always the same because the values being added are hard-coded into the script. The script would be more useful if we could pass values to the script from the command line.
tclsh add.tcl 23 15
The method by which numbers can be passed into, and used by a script, is as follows.
argc argv argv0
All Tcl scripts have access to three predefined variables.
$argc - number items of arguments passed to a script.
$argv - list of the arguments.
$argv0 - name of the script.
To use the arguments, the script could be re-written as follows.
if { $argc != 2 } {
puts "The add.tcl script requires two numbers to be inputed."
puts "For example, tclsh add.tcl 2 5".
puts "Please try again."
} else {
puts [expr [lindex $argv 0] + [lindex $argv 1]]
}
The lindex command returns the first and second items from the list of arguments entered at the command line. Items in a list are counted from zero.
❸ TCL腳本在linux下怎麼執行
你的linux裝了tcl解釋器了嗎,一般是
/usr/bin/tclsh,如果確認你裝了
(確認方法是在命令行下執行
tclsh),如果沒問題,就在你的TCL腳本第一行加上
#!/usr/bin/env
tclsh
然後確保你的腳本(假定腳本名字叫test.tcl)
是可執行的
(chmod
+x
test.tcl)
然後直接運行
./test.tcl
即可。
❹ 文件管理裡面都是什麼 tcl
• Tcl是什麼?
1、Tool Command Language 2、Terminal Control Language Tcl是一種解釋型的腳本語言。腳本解釋器為tclsh,同時它也是一個shell環 境。Tcl和C語言有著天然的親緣關系,即相近的數據類型與控制結構;通 過規范的API,能夠比較方便的用C進行Tcl的擴展開發。
• Tcl能做什麼?
1、Tcl首先是作為一種簡單的命令腳本語言而發明,以便控制和調用各個 系統命令。 2、與C相似的數據類型與控制結構,使其具有處理高級事務的能力。 3、強大的文本處理能力。 4、擴展能力達到GUI、網路、OOP等各個方面。
• 我們為什麼用Tcl?
1、因為亞信用它。 2、確實好用,功能強大:從KAP加速引擎到html(ktcl)標簽。 3、快速學習、快速開發。
老套
• 一個著名的程序
世界上最著名的程序是什麼?猜一猜: 是「Hello World!」,下面是tcl版的程序(設aiobs56> 為Unix系統提示符) aiobs56> cathello.tcl #!/aitools/bin/tclsh puts「Hello World!」 aiobs56> hello.tcl Hello World! aiobs56>
• shell方式
以上是以程序的方式運行;tcl也可以運行於shell的形式(提示符%) aiobs56> tclsh % puts「Hello World!」 Hello World! %exit aiobs56>
老套(續)
• Tcl腳本程序的結構
1、在第一行指定解釋器#!/aitools/bin/tclsh 或如下寫法
#!/bin/sh
# the next line restarts usingtclsh\ exec tclsh "$0" "$@ " 2、注釋的標記為# 如: # This is acomment sentence 3、句與句(包括注釋句)之間以「換行」或「;」分隔 如: #Following a sentence puts 「line1」 puts 「line 2」 ; # Anothercomment
老套(續)
❺ verdi 怎麼執行tcl腳本
你的linux裝了tcl解釋器了嗎,一般是 /usr/bin/tclsh,如果確認你裝了 (確認方法是在命令行下執行 tclsh),如果沒問題,就在你的TCL腳本第一行加上#!/usr/bin/env tclsh
然後確保你的腳本(假定腳本名字叫test.tcl) 是可執行的 (chmod +x test.tcl)
然後直接運行 ./test.tcl 即可。
❻ 如何編譯SQLite-How To Compile SQLite
SQLite是ANSI-C的源代碼。在使用之前必須要編譯成機器碼。這篇文章是用於各種編譯SQLite方法的指南。
這篇文章不包含編譯SQLite的每個步驟的反饋,那樣可能會困難因為每種開發場景都不同。所以這篇文章描述和闡述了編譯Sqlite的原則。典型的編譯命令已經作為例子提供了,以期望應用開發者能夠使用這些例子作為完成他們自己定製的編譯過程的的一個指南。換句話說,這篇文章提供了想法和見解,而不是交鑰匙的解決方法。
融合VS單獨源文件
Sqlite是由超過一百個c源碼文件以及眾多的目錄下的腳本構建的。Sqlite的實現是純粹的ANSI-C,但是許多C語言源代碼文件是由輔助的C程序生成或者轉換來的,並且AWK,SED和TCL腳本會融合到完成的sqlite庫中。對Sqlite構建需要的C程序和轉換和創建C語言源碼是一個復雜的過程。
為了簡化這些,sqlite也通過一個預打包的合並後的源碼文件:sqlite3.c。這個合並文件是一個ANSI-C源碼實現整個SQLite庫的唯一文件。合並後的文件更容易處理。所有的東西都包含在這一個文件里,所以很容易進入一個更大的C或者C++程序的源碼樹。所有的代碼生成和轉換步驟都已經實現了,因此沒有輔助的C程序需要去配置和變異,也沒有腳本需要去運行。並且,因此所有哭都包含在一個翻譯單元,編譯器可以做更多高級的優化從而提升5%到10%的性能。因為這些原因,融合後的源碼文件sqlite3.c對所有程序來講都是值得推薦的。
推薦所有的應用程序使用融合文件。
直接從單獨的源碼文件中構建sqlite當然可以,但是並不推薦。對一些特殊的應用程序,可能需要修改構建程序去處理使用那些從網站上下載的預構建的源碼文件不能完成的情況。對於這些情況,推薦構建和使用一個定製過的合並文件。換句話說,即使一個工程需要以單獨的源碼文件構建sqlite,仍然推薦使用一個融合後的源碼文件作為一個中間步驟。
編譯命令行介面(CLI)
構建命令行介面需要三個源碼文件:
sqlite3.c:Sqlite融合的源碼文件
sqlite3.h:匹配sqlite3.c以及定義sqlite的c語言介面的頭文件
shell.c:命令行介面程序本身。這個c源碼文件包含一個main()的常式和每輪循環的用戶輸入的提示符並將輸入傳給sqlite資料庫引擎用於處理。
所有的上述源碼的三個文件都被包含在下載頁面的amalgamation tarball中。
為了構建CLI,簡單的將這三個文件放置在相同的目錄下然後一起編譯他們。用MSVC:
cl shell.c sqlite3.c -Fesqlite3.exe
在unix系統上(或者在windows上用cygwin或者mingw+msys)典型的命令會有些像這樣:
gcc shell.c sqlite3.c -lpthread -ldl
為了SQLite線程安全,需要pthreads庫。但是因為CLI是一個單線程的,我們可以指示SQLite構建一個非線程安全的庫並因此護綠pthreads庫:
gcc -DSQLITE_THREADSAFE=0 shell.c sqlite3.c -ldl
-ldl庫是在支持動態裝載時需要,例如sqlite3_load_extension() 介面和load_extension()
SQL function。如果這些特性都不要求,那麼我們也可以使用SQLITE_OMIT_LOAD_EXTENSION編譯時間選項忽略他們。
gcc -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION shell.c sqlite3.c
有人可能想要提供其他的編譯時間選項(compile-time options),例如SQLITE_ENABLE_FTS3去全文本搜索或者SQLITE_ENABLE_RTREE用於R*樹搜索引擎擴展。而有人將正常指定一些編譯優化開關。(預編譯的CLI可以從選擇sqlite網站上使用「-Os」下載下來)有無數種可能的變數在這里。
關鍵點在這里:構建CLI需要編譯一起兩個C語言文件。shell.c文件包含入口的定義和用戶輸入的loop,而sqlite融合文件sqlite3.c包含完整的sqlite庫的實現。
編譯TCL介面
sqlite的tcl介面是一個小的模塊被添加到一般的融合文件中。結果是一個新的融合後的源碼文件,稱之為「tclsqlite3.c」。這個源碼文件是生成一個可以使用TCL
load命令去載入到一個標準的tclsh或者wish中,或者隨著sqlite構建成功生成一個單獨唯一的tclsh的共享庫所需要的。一個tcl的融合的副本被包含在下載頁的TEA
tarball中作為一個文件。
為了生成一個linux上的sqlite的TCL-loadable庫,下面的命令需要滿足:
gcc -o libtclsqlite3.so -shared tclsqlite3.c -lpthread -ldl -ltcl
不幸的是構建Mac OS X 和 Windows的共享庫並不是如此簡單。對於這些平台最好使用包含在TEA tarball中的configure腳本和makefile.
為了生成一個單獨的tclsh,可以用於sqlite靜態鏈接,使用如下的編譯器調用:
gcc -DTCLSH=1 tclsqlite3.c -ltcl -lpthread -ldl -lz -lm
這里的技巧是-DTCLSH=1選項。sqlite的TCL介面模塊包含一個main的過程,用於初始化一個TCL解釋器並在以-DTCLSH=1編譯後進入到一個命令行loop。上述命令可以工作在Linux和Mac
OS X,雖然有時可能需要依賴於平台調整庫選項以及編譯的TCL的哪一個版本。
構建融合文件
下載頁提供的sqlite融合文件的版本對大多數用戶來說是足夠的。然而,一些工程可能想要或者需要構建他們自己的融合文件。一個常見的構建一個定製的融合文件的理由是為了使用特定的compile-time options來定製sqlite庫。回想sqlite融合文件中包含了許多C代碼由輔助程序和腳本生成。許多的編譯時間選項影響這一成聖代碼而且必須在融合文件組裝前提供給代碼生成器。這一系列必須傳給代碼生成器的編譯時間相關的選項會使得sqlite的發布版本各不相同,但是在寫這邊文章的時候,代碼生成器需要知道的這組選項包括:
SQLITE_ENABLE_UPDATE_DELETE_LIMIT
SQLITE_OMIT_ALTERTABLE
SQLITE_OMIT_ANALYZE
SQLITE_OMIT_ATTACH
SQLITE_OMIT_AUTOINCREMENT
SQLITE_OMIT_CAST
SQLITE_OMIT_COMPOUND_SELECT
SQLITE_OMIT_EXPLAIN
SQLITE_OMIT_FOREIGN_KEY
SQLITE_OMIT_PRAGMA
SQLITE_OMIT_REINDEX
SQLITE_OMIT_SUBQUERY
SQLITE_OMIT_TEMPDB
SQLITE_OMIT_TRIGGER
SQLITE_OMIT_VACUUM
SQLITE_OMIT_VIEW
SQLITE_OMIT_VIRTUALTABLE
為了構建一個定製的融合文件,先下載原始的獨立源碼文件到一個unix或者類unix開發平台。確定獲取的原始源碼文件不是「預編譯過的源文件」。任何人都可以通過到下載頁或者直接從configuration management system.獲取完整的一套原始源碼文件。
假設sqlite源碼樹被存在一個名為「sqlite」的目錄下。計劃構建一個平行目錄下的名為「bld」的融合文件。首先通過運行sqlite源碼樹種的configure腳本運行或者通過製作一份源碼樹頂層的的makfile模板的一份,來構建一個合適的makefile.然後手動編輯這個Makfile去包含需要的編譯時間相關的選項。最終運行:
make sqlite3.c
在windows上使用MSVC:
nmake /f Makefile.msc sqlite3.c
sqlite3.c的make
target會自動構造一般的「sqlite3.c」合並的源碼文件,以及它的頭文件「sqlite3.h」,和包含TCL介面的融合源碼文件「tclsqlite3.c」。之後,需要的文件可以被拷貝到文件目錄下然後根據上述勾勒的過程編譯。
構建一個windows的動態鏈接庫DLL
為了在windows構建一個sqlite的dll使用,首先獲取對應的融合過的源碼文件,sqlit3.c和sqlite.h。這些可以從SQLite website上下載或者和上述告知的一樣去定製生成。
使用工作目錄下的源碼文件,一個dll可以在msvc中使用如下命令生成:
cl sqlite3.c -link -dll -out:sqlite3.dll
上述命令需要運行在msvc的MSVC Native Tools Command
Prompt.如何你已經在機器上安裝了msvc,你可能有多個版本的這種命令提示符,針對於x86和x64的自帶構建的,或者交叉編譯到ARM的。依賴要求的DLL去使用對應合適的命令提示符工具。
如果使用MinGW編譯器,命令是這樣的:
gcc -shared sqlite3.c -o sqlite3.dll
注意MinGW只生成32位的dll。另有一個分開的MinGW64工程可以用來生成64位的dll。可以推斷其命令行語法是類似的。需要注意的是最近的MSVC的版本生成的DLLs可能不能工作到WinXP或者更早版本的windows上。因此為了最大限度的兼容你的生成的dll,推薦MinGW。一個好的經驗法則是使用MinGW去生成32位的dlls,使用msvc去生成64位的dlls。
❼ 如何在tcl腳本中調用shell命令
你的linux裝了tcl解釋器了嗎,一般是 /usr/bin/tclsh,如果確認你裝了 (確認方法是在命令行下執行 tclsh),如果沒問題,就在你的TCL腳本第一行加上 #!/usr/bin/env tclsh 然後確保你的腳本(假定腳本名字叫test.tcl) 是可執行的 (chmod +x tes...