#!/bin/sh
$(./tool < input.data > output.another_data 2> errors)
echo $?

你好。我曾经有过如此愚蠢的简单脚本来调试我的工具。但是,仅将stderr重定向到文件而不将其打印到屏幕上并不是很方便。发现tee在这种情况下很有用。
因此来到了这样的版本。$(./tool < input.data > output.another_data 2>&1 | tee errors.txt)在这里我被卡住了。与其获取工具的错误代码,不如获取tee的错误代码。
您能否提供建议,以使管道中的工具而不是T恤出现错误?
提前致谢 :-)

所以,我在这里。现在,它读取第4行:=:找不到有关$value=...行的命令。
这有什么问题吗?
===================
编辑:

#!/bin/bash
set -o pipefail

$value=$(./tool < input.data > output.another_data 2> errors)
if [ $? == 0 ]; then
        case $value in
                1) echo "out of bounds"
                ;;
                2) echo "heap err"
                ;;
        esac
fi

最佳答案

This答案说明了如何获取管道中所有命令的返回码。 – devnull

而且,根据您的编辑,您不应该说$value=...,而应该说value=... – devnull

关于bash - 如何在管道中获取应用程序的错误代码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21508646/

10-14 21:25
查看更多