'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?version? ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. The first argument is ignored and used for recording '\" the version when the .VS was added, so that the sidebars can be '\" found and removed when they reach a certain age. If another argument '\" is present, then a line break is forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ta \\n()Au \\n()Bu .ie !"\\$3"" \{\ \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$2"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 5.5c 11c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH tclsh 1 "" Tcl "Tcl Applications" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME tclsh \- 包含 Tcl 解釋器的簡單的 shell .SH "總覽 SYNOPSIS" \fBtclsh\fR ?\fIfileName arg arg ...\fR? .BE .SH "描述" .PP \fBTclsh\fR 是一個 shell 類應用程序,從它的標準輸入或一個文件讀 Tcl 命令並對其求值(evaluate)。 如果你不加參數的調用,則它交互式的執行,從標準輸入讀 Tcl 命令並向標準輸出打印命令結果和出錯信息。它一直運行直到調用 \fBexit\fR 命令或在它的標準輸入上讀到文件結束。如果在用戶的主(home)目錄裏存在一個文件 \fB.tclshrc\fR (或在 Windows 平臺上的 \fBtclshrc.tcl\fR),在從標準輸入讀第一條命令之前,\fBtclsh\fR 把這個文件作爲一個 Tcl 腳本來求值。 .SH "腳本文件 SCRIPT FILES" .PP 如果加參數調用 \fBtclsh \fR則第一個參數是腳本文件的名字而任何額外的參數作爲給腳本使用的變量(見後)。 \fBtclsh\fR 將從指名的文件中讀 Tcl 命令而不是從標準輸入讀取;當到達文件結束時 \fBtclsh\fR 將退出。在這種情況下不自動的對 \fB.tclshrc\fR 求值,如果需要的話,腳本文件總是可以 \fBsource\fR(包含)它。 .PP 如果你建立的 Tcl 腳本文件的第一行是 .CS \fB#!/usr/local/bin/tclsh\fR .CE 則如果你把它標記爲可執行的,接着就可以直接在你的 shell 中調用這個腳本文件。這裏假定了\fB tclsh\fR 被安裝在缺省的位置 /usr/local/bin;如果它被安裝在其他地方,那麼你需要修改上述行來匹配之。許多 UNIX 系統不允許 \fB#!\fR 行超出 30 個字符的長度,所以要確定 \fBtclsh\fR 可執行文件能被用短文件名訪問。 .PP 一個更好的途徑是用下面三行來開始你的腳本文件: .CS \fB#!/bin/sh # the next line restarts using tclsh \e exec tclsh "$0" "$@"\fR .CE 這種方法比起前面的段落有三個好處。首先,\fBtclsh\fR 二進制文件的位置不需要填入(hard-wired into) 腳本中: 它可以在你的 shell 查找路徑中的任何地方。其次,他超越了(get around)了上種方法的 30 字符的文件名的限制。第三,這種方法在 \fBtclsh\fR 自身也是 shell 腳本時仍可運行(一些系統要處理多體系或操作系統: \fBtclsh\fR 腳本選擇某個二進制文件來運行)。第三行導致 \fBsh\fR 和 \fBtclsh\fR 兩者來處理腳本,但 \fBexec\fR 只被 \fBsh \fR執行。 \fBsh\fR 首先處理腳本文件;它把第二行作爲腳本文件對待並執行第三行。\fBexec\fR 語句導致 shell 停止處理而啓動 \fBtclsh\fR 來重新處理整個腳本。當 \fBtclsh\fR 啓動時,因爲第二行的反斜線導致第三行被作爲第二行註釋的一部分,它把所有三行都作爲註釋對待。 .PP .VS You should note that it is also common practise to install tclsh with its version number as part of the name. This has the advantage of allowing multiple versions of Tcl to exist on the same system at once, but also the disadvantage of making it harder to write scripts that start up uniformly across different versions of Tcl. .VE .SH "變量 VARIABLES" .PP \fBTclsh\fR 設置了下列 Tcl 變量: .TP 15 \fBargc\fR 包含 \fIarg\fR 參數的個數(沒有則爲 0),不包括腳本文件的名字。 .TP 15 \fBargv\fR 包含一個 Tcl 列表,其元素依次是 \fIarg\fR 參數,如果沒有 \fIarg\fR 參數則是一個空串。 .TP 15 \fBargv0\fR 如果指定了 \fIfileName\fR 則在此包含。否則。包含調用 \fBtclsh\fR 使用的名字。 .TP 15 \fBtcl_interactive\fR 如果交互式運行 \fBtclsh\fR 則包含 1(不指定\fIfileName\fR 並且標準輸入是一個終端類設備),否則是 0。 .SH "提示符 PROMPTS" .PP 當交互式的調用 \fBtclsh\fR 時,它通常爲每條命令提示\(lq\fB%\fR\(rq。你可以通過設置變量 \fBtcl_prompt1\fR 和 \fBtcl_prompt2\fR 來改變提示符。如果存在變量 \fBtcl_prompt1\fR 則它必須由一個輸出一個提示符的 Tcl 腳本組成;\fBtclsh\fR 對 \fBtcl_prompt1\fR 中的腳本求值而不是輸出一個提示符。變量 \fBtcl_prompt2\fR 以類似的方式用在鍵入了換行而當前命令卻不完整的時候;如果沒設置 \fBtcl_prompt2\fR 則對不完整的命令不給以提示符。 .SH "關鍵字 KEYWORDS" argument, interpreter, prompt, script file, shell .SH "[中文版維護人]" .B 寒蟬退士 .SH "[中文版最新更新]" .B 2001/06/20 .SH "《中國linux論壇man手冊頁翻譯計劃》:" .BI http://cmpp.linuxforum.net .SH "跋" .br 本頁面中文版由中文 man 手冊頁計劃提供。 .br 中文 man 手冊頁計劃:\fBhttps://github.com/man-pages-zh/manpages-zh\fR