我在tclsh
下执行以下命令exec sh -c "grep -w $string $file"
当$ string中的$ string不匹配时,我收到以下错误: 子过程异常退出
如何避免这种错误
答案 0 :(得分:0)
如果找不到模式,grep将返回1,exec将其解释为错误并显示上述消息。
你应该测试grep命令的返回或者添加' -q'参数,如果你想避免该消息:
http://www.gnu.org/software/grep/manual/html_node/Exit-Status.html
答案 1 :(得分:0)
当子进程以非零退出代码退出时,exec
会生成错误。当您处理诸如grep
之类的命令时,如果根本找不到任何东西,也会生成非零代码。
try {
set results [exec grep foo bar.txt]
set status 0
} trap CHILDSTATUS {results options} {
set status [lindex [dict get $options -errorcode] 2]
}
(手册页还介绍了如何在早期版本中处理问题。代码非常丑陋。)
请注意,当close
包含失败的grep
的管道时,您可能会收到相同的错误。这是相同的机制。