我正在使用cygwin在windows上运行一个shell脚本,其中我每次都使用不同的参数执行多次程序。有时,程序会为某些输入参数生成分段错误。我想生成一个文本文件,其中shell脚本可以为哪个输入写入,程序失败。基本上我想每次运行时检查程序的返回值。在这里,我假设当程序失败时,它会返回与成功时不同的值。我不确定这一点。可执行文件是一个C ++程序。
有可能这样做吗?请指导。如果可能,请提供shell脚本的代码段。
另外,请告诉我们返回的所有值。
我的脚本是.sh文件。
答案 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
。