unknown.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1993 The Regents of the University of California.
  3. '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: unknown.n,v 1.4.12.1 2004/10/27 14:43:15 dkf Exp $
  9. '" 
  10. .so man.macros
  11. .TH unknown n "" Tcl "Tcl Built-In Commands"
  12. .BS
  13. '" Note:  do not modify the .SH NAME line immediately below!
  14. .SH NAME
  15. unknown - Handle attempts to use non-existent commands
  16. .SH SYNOPSIS
  17. fBunknown fIcmdName fR?fIarg arg ...fR?
  18. .BE
  19. .SH DESCRIPTION
  20. .PP
  21. This command is invoked by the Tcl interpreter whenever a script
  22. tries to invoke a command that doesn't exist.  The default implementation
  23. of fBunknownfR is a library procedure defined when Tcl initializes an
  24. interpreter.  You can override the default fBunknownfR to change its
  25. functionality.  Note that there is no default implementation of
  26. fBunknownfR in a safe interpreter.
  27. .PP
  28. If the Tcl interpreter encounters a command name for which there
  29. is not a defined command, then Tcl checks for the existence of
  30. a command named fBunknownfR.
  31. If there is no such command, then the interpreter returns an
  32. error.
  33. If the fBunknownfR command exists, then it is invoked with
  34. arguments consisting of the fully-substituted name and arguments
  35. for the original non-existent command.
  36. The fBunknownfR command typically does things like searching
  37. through library directories for a command procedure with the name
  38. fIcmdNamefR, or expanding abbreviated command names to full-length,
  39. or automatically executing unknown commands as sub-processes.
  40. In some cases (such as expanding abbreviations) fBunknownfR will
  41. change the original command slightly and then (re-)execute it.
  42. The result of the fBunknownfR command is used as the result for
  43. the original non-existent command.
  44. .PP
  45. The default implementation of fBunknownfR behaves as follows.
  46. It first calls the fBauto_loadfR library procedure to load the command.
  47. If this succeeds, then it executes the original command with its
  48. original arguments.
  49. If the auto-load fails then fBunknownfR calls fBauto_execokfR
  50. to see if there is an executable file by the name fIcmdfR.
  51. If so, it invokes the Tcl fBexecfR command
  52. with fIcmdfR and all the fIargsfR as arguments.
  53. If fIcmdfR can't be auto-executed, fBunknownfR checks to
  54. see if the command was invoked at top-level and outside of any
  55. script.  If so, then fBunknownfR takes two additional steps.
  56. First, it sees if fIcmdfR has one of the following three forms:
  57. fB!!fR, fB!fIeventfR, or fB^fIoldfB^fInewfR?fB^fR?.
  58. If so, then fBunknownfR carries out history substitution
  59. in the same way that fBcshfR would for these constructs.
  60. Finally, fBunknownfR checks to see if fIcmdfR is
  61. a unique abbreviation for an existing Tcl command.
  62. If so, it expands the command name and executes the command with
  63. the original arguments.
  64. If none of the above efforts has been able to execute
  65. the command, fBunknownfR generates an error return.
  66. If the global variable fBauto_noloadfR is defined, then the auto-load
  67. step is skipped.
  68. If the global variable fBauto_noexecfR is defined then the
  69. auto-exec step is skipped.
  70. Under normal circumstances the return value from fBunknownfR
  71. is the return value from the command that was eventually
  72. executed.
  73. .SH EXAMPLE
  74. Arrange for the fBunknownfR command to have its standard behavior
  75. except for first logging the fact that a command was not found:
  76. .PP
  77. .CS
  78. # Save the original one so we can chain to it
  79. rename fBunknownfR _original_unknown
  80. # Provide our own implementation
  81. proc fBunknownfR args {
  82.     puts stderr "WARNING: unknown command: $args"
  83.     uplevel 1 [list _original_unknown {expand}$args]
  84. }
  85. .CE
  86. .SH "SEE ALSO"
  87. info(n), proc(n), interp(n), library(n)
  88. .SH KEYWORDS
  89. error, non-existent command