TCL:执行 egrep "child process exited abnormally"

标签 tcl

egrep 命令有问题。
当我在 tcsh 中执行我的命令时,它运行良好,但是当我从 tcl 脚本或 tclsh 中执行它时,我得到:

子进程异常退出

我的 tcl 代码:

exec egrep -i "^(\\\s+)?(tvf::)?LAYOUT\\\s+PATH" test_file

test_file 包含
LAYOUT PATH "file1"
  LAYOUT PATH "file2"
//LAYOUT FILE "file 3"
foo string
tvf::LAYOUT PATH "file4"
  tvf::LAYOUT PATH "file5"

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

大家好,

我做了一些额外的调查并在 32 位机器上运行这个命令。
该命令适用于 32 位 egrep

结果:
LAYOUT PATH "file1"
    LAYOUT PATH "file2"
tvf::LAYOUT PATH "file3"
      tvf::LAYOUT PATH "file3"

文件/bin/egrep
*/bin/egrep: 到 `grep' 的符号链接(symbolic link)*

文件/bin/grep
*/bin/grep:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),适用于 GNU/Linux 2.2.5,动态链接(使用共享库),已剥离*

但是当我删除额外的反斜杠时:
exec egrep -i "^(\s+)?(tvf::)?LAYOUT\s+PATH" test_file

命令返回错误:

子进程异常退出

64位机器上的egrep版本是:

文件/bin/egrep
*/bin/egrep: 到 `grep' 的符号链接(symbolic link)*

文件/bin/grep
*/bin/grep:ELF 64 位 LSB 可执行文件,AMD x86-64,版本 1 (SYSV),适用于 GNU/Linux 2.6.9,动态链接(使用共享库),适用于 GNU/Linux 2.6.9,已剥离*

最佳答案

grep 使用其退出状态来指示匹配的存在/不存在 (man page) - 如果没有匹配,则退出状态为 1。Tcl 的 exec将任何非零退出状态视为异常情况。您需要 catch exec 调用,检查 catch 的返回值,如果非零,检查 $errorCode多变的。这里有一个完整的例子:http://wiki.tcl.tk/exec ,单击“显示讨论”并向下滚动到 KBK 的示例。

关于TCL:执行 egrep "child process exited abnormally",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10372155/

相关文章:

if-statement - 如何在 if 语句中使用 expr?

tcl - Modelsim - 为没有 GUI 的文件设置 "compile to library"

fonts - 如何更改 ttk::button (主题小部件)中的字体和字体大小?

linux - 为什么超时在这个期望脚本中不起作用?

postgresql - 在二进制 Windows (7) 64 位 Enterprise DB 安装上创建 PLTCL 语言时出错

tcl - 您如何在 tclsh(或其他方式)中查看 tcl 字节码

Linux Shell脚本,以另一个用户身份杀死

dictionary - dict 从嵌套字典中获取 dict,在 tcl 中创建一个副本?

user-interface - Tcl/Tk 中的交互式图表

linux - 如何仅获取最后一次发送的期望脚本的输出