我在使用shell时遇到了捕获输出和退出代码的问题。
我需要比较两个脚本的退出代码,如果它们不匹配,我想要输出我的两个脚本的输出内容。
目前我拥有的代码:
#!/bin/bash
resultA=$(./a.out 2>&1)
exitA=$?
resultB=$(./b.out 2>&1)
exitB=$?
问题在于可能出现的分段错误消息没有被捕获,因为它被定向到我的当前 shell 的错误输出,但我需要捕获所有内容,包括诸如分段错误之类的内容。
以下是一种解决方法,虽然不够详细,但可以起到一定的作用:
#!/bin/bash
resultA=$(./a.out 2>&1)
exitA=$?
resultB=$(./b.out 2>&1)
exitB=$?
if [ $exitA == 139 ]; then
resultA=$resultA"Segmentation Fault"
fi
这至少使得“分段错误”出现在我的结果变量中。
SIGSEGV
(请参见下面的答案)。 - Michael Jaros