- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我搜索了很长时间,但只能找到一个简短的解释,即 $@
扩展了一些东西。
有人可以解释一下或向我提供一个链接,以详细解释 "$@"
作为
tclsh "$0" "$@"
另外,我正在查看某人的脚本,他们有以下内容:
exec tclsh `basename $0` $*
$*
在这种情况下做什么?
非常感谢。
最佳答案
这些是 Tcl 脚本中经常使用的引导节的一部分。让我们得到整个节:
#!/bin/sh
# A Tcl comment, whose contents don't matter \
exec tclsh "$0" "$@"
第一行将脚本作为 Bourne shell 程序运行(bash 和许多其他 shell 的工作方式相同;它是 POSIX 规范)。第二行被 shell 忽略。第三行用传递给 shell 的参数替换 带有 tclsh 的 shell。 "$0"
是脚本的名称,"$@"
是所有带有适当引号的参数的魔法。 (您可能还会看到 ${1+"$@"}
,它是一些旧 shell 中邪恶错误的解决方法。)理论上您可以在这里省略 exec
,但是这意味着脚本的其余部分将在 Tcl 程序终止时由系统 shell 解释;那可能不是你想要的。最后,当 tclsh 看到上面的那些行时,它认为它们是所有注释; Tcl 注释从行首的 #
开始(或前面有空格),在允许行继续标记 之后继续到行尾。 (是的,这很不寻常。不过很有用。)
basename
的形式很不寻常,因为它会删除正在执行的文件的所有路径。这可能不是一个好主意,因为它可能意味着 tclsh 不知道要执行哪个文件。同样,$*
也几乎但不正确(它扩展到所有参数,但没有引号;如果用户传入带空格的文件名,您很快就会看看区别!)
最后,这些天来使用这样的开始节被认为是最佳实践:
#!/usr/bin/env tclsh
它更短,更不容易出错,并且与 shell 一样标准化。
关于tcl - tclsh "$@" "$0" "$@"的用途和作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11767319/
由于各种平台(Linux、SUN)中 tclsh 的不同路径,任何人都知道如何在 Tcl 代码中调用 tclsh? 例如在 SUN 中: #!/usr/bin/sun/tclsh 在 Linux 中:
我正在使用 Ubuntu 18.04.1 LTS,内核 4.15.0-34-generic。我是一个相当新的用户,在为我的新项目安装了一堆软件(不幸的是,我已经忘记了)时,每次打开终端时我突然出现这两
从我的 Tcl 脚本中,我想找到运行我的脚本的 tclsh 可执行文件的路径(如 Python 中的 sys.executable),或者至少找到如何从命令行调用 tclsh(如 Perl 中的 $^
我正在尝试在 Windows 7 上构建一个名为 Slicer3 的软件,该软件具有“ super 构建”功能。这是一个用于检查和构建 Slicer3 的一体化 TCL 脚本。 我运行 CYGWIN
tclsh 有内联命令之类的东西吗? 比如:tclsh -e "set a 7 ; puts $a" 当然我试过上面的方法,还是不行。但是你明白了吗? 谢谢,格特 最佳答案 使用 Expect,您可以
我搜索了很长时间,但只能找到一个简短的解释,即 $@ 扩展了一些东西。 有人可以解释一下或向我提供一个链接,以详细解释 "$@" 作为 的第二个参数的目的 tclsh "$0" "$@" 另外,我正在
我正在尝试在 Windows 7 上构建一个名为 Slicer3 的软件,该软件具有“ super 构建”功能。这是一个用于检查和构建 Slicer3 的一体化 TCL 脚本。 我运行 CYGWIN
tclsh 有内联命令之类的东西吗? 比如:tclsh -e "set a 7 ; puts $a" 当然我试过上面的方法,还是不行。但是你明白了吗? 谢谢,格特 最佳答案 使用 Expect,您可以
我想将我的 tclsh 从/import/vne/bin/tclsh 更改为/import/desapps/tcl/bin/tclsh。我在做 export PATH=$PATH:/import/de
我刚刚在我的 Ubuntu 12.04.3 64 位上安装了 Tcl/Tk 8.5.11。我安装了以下两个命令: %sudo apt-get install tcl %sudo apt-get ins
在csh你可以做 set ignoreeof 或者在 bash tou 上可以做 export ignoreeof=1 这将使 csh/bash 忽略 EOF,即它不会在 Ctrl+D 时退出,或者当
我正在尝试使用用 C++ 编写的包(共享库)运行 tclsh。该包需要一种类似于 Windows PumpMessage 的机制,以便在通过包 req 加载后在主线程上定期调用。 有了愿望,我可以简单
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
可以在 TCL shell (tclsh) 中使用光标键(如向上箭头键)获取命令历史记录。 我在 fedora 上运行 tclsh,linux 版本为 2.6.21。 最佳答案 您想访问 readli
我有一个 tclsh 脚本,我需要在其中在后台执行某些命令。我可以使用 exec 命令从 tcl 实现这一点:exec myprog &。 但是我如何等待 myprog 从 tcl 完成。命令 wai
我是一个业余爱好者,尝试拼凑一个小项目。这是一个简单的笔记存储和检索控制台应用程序,适用于 Windows Vista(和 XP - 我希望通过 USB 内存棒运行整个程序)。 我使用 Sqlite
我已经看过理论并理解为什么第一个比第二个快的解释,但我想看看 tcl 中的字节码。在 python shell 中,很容易看到字节码,但我很难找到在 tclsh 中查看它的解决方案。 #first a
我有一个具有多次出现模式的字符串。我需要从字符串中提取第一个模式。 即: 我的模式: ABC : 1 XXX : 3 YYY : 4 ZZZ : 9 ABC : 3 XXX : 4 YYY : 6 Z
过去几天我一直在寻找问题的解决方案,所以最后我来到了这里。 我必须编写一个应该从 Linux/Debian 系统打开的 Tcl 脚本。问题是,该脚本应该登录到 Cisco 路由器,然后进入特殊的 tc
为什么我不能使用向左和向右箭头键(实际上,向上和向下键也是如此)在 tclsh 中我当前所在的行上移动。交互式 shell ?如果我尝试按任何一个,我会得到一堆 abracadabra 而不是来回移动
我是一名优秀的程序员,十分优秀!