我正在尝试使用 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/