tcl - 在 tcl 脚本中,exec make check RUNTESTFLAGS ="compile.exp --target_board=atmega128-sim"不起作用

标签 tcl

我正在尝试使用 tcl 中的驱动程序脚本运行 gcc 测试套件。 当我写

if {[catch {exec make check RUNTESTFLAGS="compile.exp --target_board=atmega128-sim"} errmsg ]} {
    puts "Test finished with failures\n $errmsg"
} else {
    puts "Test finished"
}

这给出错误为

测试失败

制作:无法识别的选项 `--target_board=atmega128-sim"'

用法:使 [选项] [目标] ... ……

但是如果我从 RUNTESTFLAGS 中删除 compile.exp,它就可以正常工作。

if {[catch {exec make check RUNTESTFLAGS="--target_board=atmega128-sim"} errmsg ]} { 

.....

是因为参数 RUNTESTFLAGS 中存在双引号吗? 我需要使用不同的 RUNTESTFLAGS 运行 make check。 请提出一种方法来实现这一目标。

提前致谢!!

最佳答案

首先,这个问题的核心是:

exec make check RUNTESTFLAGS="compile.exp --target_board=atmega128-sim"

其他一切都只是(正确的)包装。问题是您使用的是上面的 Bourne shell 语法,而不是 Tcl 语法,所以上面的 RUNTESTFLAGS 设置为 "compile.exp (带引号),其余部分作为另一个参数发送到make。不是你想要的!(Tcl 只允许双引号字符串在单词的前面开始;bash 更宽松。)正确的版本是:

exec make check "RUNTESTFLAGS=compile.exp --target_board=atmega128-sim"

但是像这样拆分它更容易,也更更清晰:

set runTestFlags "compile.exp --target_board=atmega128-sim"
exec make check RUNTESTFLAGS=$runTestFlags

关于tcl - 在 tcl 脚本中,exec make check RUNTESTFLAGS ="compile.exp --target_board=atmega128-sim"不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6705254/

相关文章:

python - 如何用py2exe更正TCL_LIBRARY和TK_LIBRARY

sqlite - 如何忽略sqlite3插入失败以允许tcl脚本在失败后继续?

c - 使用 SWIG 从 C/C++ 进行 Tcl 回调

Tcl:有没有办法显示 tcl 中的哪一行抛出错误?

linux - 如何将换行符添加到 tcl 中 "exec"命令的错误消息中

sql - 使用铆钉的 Informix 提取不返回查询结果的结尾

c - 内置 Tcl 类型内部表示

macos - pb在Mac下使用nsf的 "gothic"(tcl/tk去绑定(bind))库

linux - 期望 ping 脚本跳过发送步骤

file - 如何将一系列命令的输出重定向到 stdout 和 Tcl 中的文件?