通过shell脚本检查C ++可执行文件的返回值

时间:2010-03-03 15:21:02

标签: c++ shell

我正在使用cygwin在windows上运行一个shell脚本,其中我每次都使用不同的参数执行多次程序。有时,程序会为某些输入参数生成分段错误。我想生成一个文本文件,其中shell脚本可以为哪个输入写入,程序失败。基本上我想每次运行时检查程序的返回值。在这里,我假设当程序失败时,它会返回与成功时不同的值。我不确定这一点。可执行文件是一个C ++程序。

有可能这样做吗?请指导。如果可能,请提供shell脚本的代码段。

另外,请告诉我们返回的所有值。

我的脚本是.sh文件。

4 个答案:

答案 0 :(得分:3)

完成的最后一个程序的返回值在环境变量$?中可用。

答案 1 :(得分:0)

如果是bat文件,则可以使用%ERRORLEVEL%

答案 2 :(得分:0)

您可以使用shell的if命令测试返回值:

if program; then
    echo Success
else
    echo Fail
fi

或使用“and”或“or”列表仅在您成功或失败的情况下执行额外命令:

program && echo Success
program || echo Fail

请注意,如果程序返回0表示成功,则测试成功,如果您习惯于C / C ++条件成功获得非零值,则稍微违反直觉。

答案 3 :(得分:0)

假设命令行参数中没有重要的空格:

cat <<'EOF' |
-V
-h
-:
-a whatnot peezat
!

while read args
do
    if program $args
    then : OK
    else echo "!! FAIL !! ($?) $args" >> logfile
    fi
done

如果你必须保留空格,这需要更多的努力(对它有礼貌)。好吧,多一点努力;你可能在“程序”前面使用eval